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:
parent
d2177c8091
commit
19cde59c41
54
fb/fbfill.c
54
fb/fbfill.c
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue