xserver: Branch 'master' - 2 commits
Alan Hourihane
alanh at kemper.freedesktop.org
Thu Sep 27 06:55:35 PDT 2007
fb/fbarc.c | 37 +++++++++++++++++++++++++++++++++----
1 file changed, 33 insertions(+), 4 deletions(-)
New commits:
diff-tree c11a27ef85674f1e77ffa7f083646b848e1dc0b8 (from e0bb33b3d2e4f54cf20853cde9a1664a7dbd0dc7)
Author: Alan Hourihane <alanh at tungstengraphics.com>
Date: Thu Sep 27 14:54:40 2007 +0100
Add the FB_ACCESS_WRAPPER checks
diff --git a/fb/fbarc.c b/fb/fbarc.c
index faf2628..f89b81c 100644
--- a/fb/fbarc.c
+++ b/fb/fbarc.c
@@ -75,7 +75,9 @@ fbPolyArc (DrawablePtr pDrawable,
cclip = fbGetCompositeClip (pGC);
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+#ifdef FB_ACCESS_WRAPPER
wrapped = 1;
+#endif
while (narcs--)
{
if (miCanZeroArc (parcs))
@@ -99,34 +101,42 @@ fbPolyArc (DrawablePtr pDrawable,
box.y2 = y2;
if ( (x2 <= SHRT_MAX) && (y2 <= SHRT_MAX) &&
(RECT_IN_REGION(pDrawable->pScreen, cclip, &box) == rgnIN) ) {
+#ifdef FB_ACCESS_WRAPPER
if (!wrapped) {
fbPrepareAccess (pDrawable);
wrapped = 1;
}
+#endif
(*arc) (dst, dstStride, dstBpp,
parcs, pDrawable->x + dstXoff, pDrawable->y + dstYoff,
pPriv->and, pPriv->xor);
} else {
+#ifdef FB_ACCESS_WRAPPER
if (wrapped) {
fbFinishAccess (pDrawable);
wrapped = 0;
}
+#endif
miZeroPolyArc(pDrawable, pGC, 1, parcs);
}
}
else {
+#ifdef FB_ACCESS_WRAPPER
if (wrapped) {
fbFinishAccess (pDrawable);
wrapped = 0;
}
+#endif
miPolyArc(pDrawable, pGC, 1, parcs);
}
parcs++;
}
+#ifdef FB_ACCESS_WRAPPER
if (wrapped) {
fbFinishAccess (pDrawable);
wrapped = 0;
}
+#endif
}
else
#endif
diff-tree e0bb33b3d2e4f54cf20853cde9a1664a7dbd0dc7 (from 6d5c1e0d896666bcb2b3c1de7bfa424f140be364)
Author: Alan Hourihane <alanh at tungstengraphics.com>
Date: Thu Sep 27 14:50:28 2007 +0100
Fix bug #12286
diff --git a/fb/fbarc.c b/fb/fbarc.c
index 3f46bd4..faf2628 100644
--- a/fb/fbarc.c
+++ b/fb/fbarc.c
@@ -71,9 +71,11 @@ fbPolyArc (DrawablePtr pDrawable,
BoxRec box;
int x2, y2;
RegionPtr cclip;
+ int wrapped = 0;
cclip = fbGetCompositeClip (pGC);
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ wrapped = 1;
while (narcs--)
{
if (miCanZeroArc (parcs))
@@ -96,18 +98,35 @@ fbPolyArc (DrawablePtr pDrawable,
y2 = box.y1 + (int)parcs->height + 1;
box.y2 = y2;
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,
parcs, pDrawable->x + dstXoff, pDrawable->y + dstYoff,
pPriv->and, pPriv->xor);
- else
+ } else {
+ if (wrapped) {
+ fbFinishAccess (pDrawable);
+ wrapped = 0;
+ }
miZeroPolyArc(pDrawable, pGC, 1, parcs);
+ }
}
- else
+ else {
+ if (wrapped) {
+ fbFinishAccess (pDrawable);
+ wrapped = 0;
+ }
miPolyArc(pDrawable, pGC, 1, parcs);
+ }
parcs++;
}
- fbFinishAccess (pDrawable);
+ if (wrapped) {
+ fbFinishAccess (pDrawable);
+ wrapped = 0;
+ }
}
else
#endif
More information about the xorg-commit
mailing list