From f76311227be0df854aa16ed2e1f006050e152557 Mon Sep 17 00:00:00 2001 From: Victor Brekenfeld Date: Fri, 14 Jan 2022 22:01:07 +0100 Subject: [PATCH] gles2: Apply output transformations for damage --- src/backend/renderer/gles2/mod.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/backend/renderer/gles2/mod.rs b/src/backend/renderer/gles2/mod.rs index adad36f..c620dc5 100644 --- a/src/backend/renderer/gles2/mod.rs +++ b/src/backend/renderer/gles2/mod.rs @@ -1295,13 +1295,19 @@ impl Frame for Gles2Frame { let rect_constrained_loc = rect .loc .constrain(Rectangle::from_extemities((0f64, 0f64), dest.size.to_point())); - let rect_clamped_size = rect.size.clamp((0f64, 0f64), dest.size); + let rect_clamped_size = rect.size.clamp( + (0f64, 0f64), + (dest.size.to_point() - rect_constrained_loc).to_size(), + ); + + let rect = Rectangle::from_loc_and_size(rect_constrained_loc, rect_clamped_size); + let rect_transformed = self.transformation().transform_rect_in(rect, &dest.size); [ - (rect_constrained_loc.x / dest.size.w) as f32, - (rect_constrained_loc.y / dest.size.h) as f32, - (rect_clamped_size.w / dest.size.w) as f32, - (rect_clamped_size.h / dest.size.h) as f32, + (rect_transformed.loc.x / dest.size.w) as f32, + (rect_transformed.loc.y / dest.size.h) as f32, + (rect_transformed.size.w / dest.size.w) as f32, + (rect_transformed.size.h / dest.size.h) as f32, ] }) .flatten()