In fbFill() make sure the drawable is validated when pixman_fill() succeeds.

In fbSolidBoxClipped() don't return when pixman_fill() succeeds.
This commit is contained in:
Søren Sandmann Pedersen 2007-06-22 00:38:50 -04:00
parent d2177c8091
commit 19cde59c41

View File

@ -47,21 +47,17 @@ fbFill (DrawablePtr pDrawable,
switch (pGC->fillStyle) { switch (pGC->fillStyle) {
case FillSolid: case FillSolid:
#ifndef FB_ACCESS_WRAPPER #ifndef FB_ACCESS_WRAPPER
if (!pPriv->and) if (pPriv->and || !pixman_fill ((uint32_t *)dst, dstStride, dstBpp,
{ x + dstXoff, y + dstYoff,
if (pixman_fill (dst, dstStride, dstBpp, x + dstXoff, y + dstYoff, width, height, pPriv->xor)) width, height,
{ pPriv->xor))
fbFinishAccess (pDrawable);
return;
}
}
#endif #endif
fbSolid (dst + (y + dstYoff) * dstStride, fbSolid (dst + (y + dstYoff) * dstStride,
dstStride, dstStride,
(x + dstXoff) * dstBpp, (x + dstXoff) * dstBpp,
dstBpp, dstBpp,
width * dstBpp, height, width * dstBpp, height,
pPriv->and, pPriv->xor); pPriv->and, pPriv->xor);
break; break;
case FillStippled: case FillStippled:
case FillOpaqueStippled: { case FillOpaqueStippled: {
@ -218,25 +214,19 @@ fbSolidBoxClipped (DrawablePtr pDrawable,
continue; continue;
#ifndef FB_ACCESS_WRAPPER #ifndef FB_ACCESS_WRAPPER
if (!and) if (and || !pixman_fill ((uint32_t *)dst, dstStride, dstBpp,
{ partX1 + dstXoff, partY1 + dstYoff,
if (pixman_fill (dst, dstStride, dstBpp, (partX2 - partX1), (partY2 - partY1),
partX1 + dstXoff, partY1 + dstYoff, (partX2 - partX1), (partY2 - partY1), xor))
xor))
{
fbFinishAccess (pDrawable);
return;
}
}
#endif #endif
fbSolid (dst + (partY1 + dstYoff) * dstStride, fbSolid (dst + (partY1 + dstYoff) * dstStride,
dstStride, dstStride,
(partX1 + dstXoff) * dstBpp, (partX1 + dstXoff) * dstBpp,
dstBpp, dstBpp,
(partX2 - partX1) * dstBpp, (partX2 - partX1) * dstBpp,
(partY2 - partY1), (partY2 - partY1),
and, xor); and, xor);
} }
fbFinishAccess (pDrawable); fbFinishAccess (pDrawable);
} }