From afa2e399aa9c19c250a03cce1cb466f54348a97a Mon Sep 17 00:00:00 2001 From: Las Date: Tue, 18 Sep 2018 13:05:44 +0200 Subject: Fix implicit conversion of floats to ints in calls to pixman_region32_contains_point I do not think the conversion is specifically defined, but on my system and SirCmpwn's the floats are rounded instead of floored, which is incorrect in this case, since for a range from 0 to 256, any value greater or equal to 0 and less than 256 is valid. I.e. [0;256[, or 0 <= x < 256, but if x is e.g. -0.1, then it will be rounded to 0, which is invalid. The correct behavior would be to floor to -1. --- util/region.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'util') diff --git a/util/region.c b/util/region.c index 76df71f3..61f9c7c7 100644 --- a/util/region.c +++ b/util/region.c @@ -241,7 +241,7 @@ static void region_confine(pixman_region32_t *region, double x1, double y1, doub bool wlr_region_confine(pixman_region32_t *region, double x1, double y1, double x2, double y2, double *x2_out, double *y2_out) { pixman_box32_t box; - if (pixman_region32_contains_point(region, x1, y1, &box)) { + if (pixman_region32_contains_point(region, floor(x1), floor(y1), &box)) { region_confine(region, x1, y1, x2, y2, x2_out, y2_out, box); return true; } else { -- cgit v1.2.3