From fbccc4bbbc84a5459010d3238a00a0dd49111eec Mon Sep 17 00:00:00 2001 From: Zhigang Gong Date: Sat, 31 Dec 2011 19:20:10 +0800 Subject: [PATCH] Fixed a rendering bug at fillspans. We should not change the points coords when loop for the clip rects. Change to use another variable to store the clipped coords and keep the original coords. This bug cause some XTS failures. Now fix it. Signed-off-by: Zhigang Gong --- glamor/glamor_fillspans.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/glamor/glamor_fillspans.c b/glamor/glamor_fillspans.c index 94cb81e77..97c4403ce 100644 --- a/glamor/glamor_fillspans.c +++ b/glamor/glamor_fillspans.c @@ -55,19 +55,19 @@ _glamor_fill_spans(DrawablePtr drawable, nbox = REGION_NUM_RECTS(pClip); pbox = REGION_RECTS(pClip); while (nbox--) { - if (pbox->y1 > y || pbox->y2 <= y) - continue; + int real_x1 = x1, real_x2 = x2; - if (x1 < pbox->x1) - x1 = pbox->x1; + if (real_x1 < pbox->x1) + real_x1 = pbox->x1; - if (x2 > pbox->x2) - x2 = pbox->x2; + if (real_x2 > pbox->x2) + real_x2 = pbox->x2; - if (x2 <= x1) - continue; - if (!glamor_fill(drawable, gc, x1, y, x2 - x1, 1, fallback)) - goto fail; + if (real_x2 > real_x1 && pbox->y1 <= y && pbox->y2 > y) { + if (!glamor_fill(drawable, gc, real_x1, y, + real_x2 - real_x1, 1, fallback)) + goto fail; + } pbox++; } }