diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2014-10-01 10:28:10 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2014-10-01 10:28:51 +0100 |
commit | de7185bbf48ca2f617466b98328d0fdae4df1b44 (patch) | |
tree | cfc8fb4a226ce1880ebfbdbcf541bdc1d0280f05 /src/sna/sna_trapezoids.c | |
parent | c6d9303303a5ccb3ec6d072c510c09d6576cb398 (diff) |
sna/trapezoids: Fix comparison on right edge of trapezoids
We need to compare the fixed ceiling rather the floor for accuracy.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/sna/sna_trapezoids.c')
-rw-r--r-- | src/sna/sna_trapezoids.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/sna/sna_trapezoids.c b/src/sna/sna_trapezoids.c index 2c1fa655..d9390db4 100644 --- a/src/sna/sna_trapezoids.c +++ b/src/sna/sna_trapezoids.c @@ -75,8 +75,16 @@ bool trapezoids_bounds(int n, const xTrapezoid *t, BoxPtr box) do { xFixed fx1, fx2, v; - if (!xTrapezoidValid(t)) + if (!xTrapezoidValid(t)) { + __DBG(("%s: skipping invalid trapezoid: top=%d, bottom=%d, left=(%d, %d), (%d, %d), right=(%d, %d), (%d, %d)\n", + __FUNCTION__, + t->top, t->bottom, + t->left.p1.x, t->left.p1.y, + t->left.p2.x, t->left.p2.y, + t->right.p1.x, t->right.p1.y, + t->right.p2.x, t->right.p2.y)); continue; + } if (t->top < y1) y1 = t->top; @@ -104,7 +112,7 @@ bool trapezoids_bounds(int n, const xTrapezoid *t, BoxPtr box) } if (((x2 - t->right.p1.x) | (x2 - t->right.p2.x)) < 0) { - if (pixman_fixed_floor(t->right.p1.x) == pixman_fixed_floor(t->right.p2.x)) { + if (pixman_fixed_ceil(t->right.p1.x) == pixman_fixed_ceil(t->right.p2.x)) { x2 = pixman_fixed_ceil(t->right.p1.x); } else { if (t->right.p1.y == t->top) |