From f370202b685eb9e9ddeda50acfb06179f9fc82c4 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Sun, 8 Jan 2023 15:25:16 +0100 Subject: [PATCH] render: fix rounding for fractional scaling We currently scale the width/height of rectangles based on the scaled x/y instead of the unscaled x/y. This however leads to inconsistent width/height due to rounding. Fix this bug by basing width/height scaling off of the original x/y. Furthermore, fix a typo where we scaled the height off of the x coordinate instead of the y coordinate. --- river/render.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/river/render.zig b/river/render.zig index 6c1280c..9642eac 100644 --- a/river/render.zig +++ b/river/render.zig @@ -418,10 +418,10 @@ fn renderRect(output: *const Output, box: wlr.Box, color: *const [4]f32) void { /// Scale a wlr_box, taking the possibility of fractional scaling into account. fn scaleBox(box: *wlr.Box, scale: f64) void { + box.width = scaleLength(box.width, box.x, scale); + box.height = scaleLength(box.height, box.y, scale); box.x = @floatToInt(c_int, @round(@intToFloat(f64, box.x) * scale)); box.y = @floatToInt(c_int, @round(@intToFloat(f64, box.y) * scale)); - box.width = scaleLength(box.width, box.x, scale); - box.height = scaleLength(box.height, box.x, scale); } /// Scales a width/height.