From 89656572a9f3527a02e63329bdbb1204995efa3a Mon Sep 17 00:00:00 2001 From: Loukas Agorgianitis Date: Mon, 28 Apr 2025 17:51:55 +0300 Subject: [PATCH] scene: use position independent scaling Signed-off-by: Loukas Agorgianitis --- types/scene/wlr_scene.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/types/scene/wlr_scene.c b/types/scene/wlr_scene.c index 4155acc4c..cfa6e4d9a 100644 --- a/types/scene/wlr_scene.c +++ b/types/scene/wlr_scene.c @@ -349,20 +349,12 @@ static void output_to_buffer_coords(pixman_region32_t *damage, struct wlr_output wlr_output_transform_invert(output->transform), width, height); } -static int scale_length(double length, double offset, float scale) { - return round((offset + length) * scale) - round(offset * scale); -} - -static void scale_box(struct wlr_box *box, struct wlr_fbox *src, float scale) { - box->width = scale_length(src->width, src->x, scale); - box->height = scale_length(src->height, src->y, scale); - box->x = round(src->x * scale); - box->y = round(src->y * scale); -} - static void transform_output_box(struct wlr_box *box, struct wlr_fbox *src, const struct render_data *data) { enum wl_output_transform transform = wlr_output_transform_invert(data->transform); - scale_box(box, src, data->scale); + box->width = round(src->width * data->scale); + box->height = round(src->height * data->scale); + box->x = round(src->x * data->scale); + box->y = round(src->y * data->scale); wlr_box_transform(box, box, transform, data->trans_width, data->trans_height); }