Fix bug #12286
This commit is contained in:
parent
6d5c1e0d89
commit
e0bb33b3d2
27
fb/fbarc.c
27
fb/fbarc.c
|
@ -71,9 +71,11 @@ fbPolyArc (DrawablePtr pDrawable,
|
||||||
BoxRec box;
|
BoxRec box;
|
||||||
int x2, y2;
|
int x2, y2;
|
||||||
RegionPtr cclip;
|
RegionPtr cclip;
|
||||||
|
int wrapped = 0;
|
||||||
|
|
||||||
cclip = fbGetCompositeClip (pGC);
|
cclip = fbGetCompositeClip (pGC);
|
||||||
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||||
|
wrapped = 1;
|
||||||
while (narcs--)
|
while (narcs--)
|
||||||
{
|
{
|
||||||
if (miCanZeroArc (parcs))
|
if (miCanZeroArc (parcs))
|
||||||
|
@ -96,18 +98,35 @@ fbPolyArc (DrawablePtr pDrawable,
|
||||||
y2 = box.y1 + (int)parcs->height + 1;
|
y2 = box.y1 + (int)parcs->height + 1;
|
||||||
box.y2 = y2;
|
box.y2 = y2;
|
||||||
if ( (x2 <= SHRT_MAX) && (y2 <= SHRT_MAX) &&
|
if ( (x2 <= SHRT_MAX) && (y2 <= SHRT_MAX) &&
|
||||||
(RECT_IN_REGION(pDrawable->pScreen, cclip, &box) == rgnIN) )
|
(RECT_IN_REGION(pDrawable->pScreen, cclip, &box) == rgnIN) ) {
|
||||||
|
if (!wrapped) {
|
||||||
|
fbPrepareAccess (pDrawable);
|
||||||
|
wrapped = 1;
|
||||||
|
}
|
||||||
(*arc) (dst, dstStride, dstBpp,
|
(*arc) (dst, dstStride, dstBpp,
|
||||||
parcs, pDrawable->x + dstXoff, pDrawable->y + dstYoff,
|
parcs, pDrawable->x + dstXoff, pDrawable->y + dstYoff,
|
||||||
pPriv->and, pPriv->xor);
|
pPriv->and, pPriv->xor);
|
||||||
else
|
} else {
|
||||||
|
if (wrapped) {
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
|
wrapped = 0;
|
||||||
|
}
|
||||||
miZeroPolyArc(pDrawable, pGC, 1, parcs);
|
miZeroPolyArc(pDrawable, pGC, 1, parcs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
|
if (wrapped) {
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
|
wrapped = 0;
|
||||||
|
}
|
||||||
miPolyArc(pDrawable, pGC, 1, parcs);
|
miPolyArc(pDrawable, pGC, 1, parcs);
|
||||||
|
}
|
||||||
parcs++;
|
parcs++;
|
||||||
}
|
}
|
||||||
fbFinishAccess (pDrawable);
|
if (wrapped) {
|
||||||
|
fbFinishAccess (pDrawable);
|
||||||
|
wrapped = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue