aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaac Freund <mail@isaacfreund.com>2023-01-08 15:25:16 +0100
committerIsaac Freund <mail@isaacfreund.com>2023-01-08 15:25:16 +0100
commitf370202b685eb9e9ddeda50acfb06179f9fc82c4 (patch)
tree052bf7b83e859bf304d30605b0f6a57edeab735e
parent4dd02358d92050ad55f7b3c095d8a2ea0f94f607 (diff)
downloadriver-f370202b685eb9e9ddeda50acfb06179f9fc82c4.tar.gz
river-f370202b685eb9e9ddeda50acfb06179f9fc82c4.tar.xz
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.
-rw-r--r--river/render.zig4
1 files 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.