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