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 <zhigang.gong@linux.intel.com>
This commit is contained in:
Zhigang Gong 2011-12-31 19:20:10 +08:00 committed by Eric Anholt
parent 70b6341538
commit fbccc4bbbc

View File

@ -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++;
}
}