Wed Jul 22 06:10:52 2009 UTC ()
apply the patch from http://bugs.freedesktop.org/attachment.cgi?id=27568.
it fixes various issues picked up by newer pixman.


(mrg)
diff -r1.1.1.3 -r1.2 xsrc/external/mit/xorg-server/dist/exa/exa_accel.c

cvs diff -r1.1.1.3 -r1.2 xsrc/external/mit/xorg-server/dist/exa/exa_accel.c (expand / switch to context diff)
--- xsrc/external/mit/xorg-server/dist/exa/exa_accel.c 2009/07/09 07:04:33 1.1.1.3
+++ xsrc/external/mit/xorg-server/dist/exa/exa_accel.c 2009/07/22 06:10:52 1.2
@@ -415,6 +415,7 @@
 
     if (rects) {
 	int i;
+	int ordering;
 
 	for (i = 0; i < nbox; i++) {
 	    rects[i].x = pbox[i].x1 + dx + src_off_x;
@@ -423,7 +424,16 @@
 	    rects[i].height = pbox[i].y2 - pbox[i].y1;
 	}
 
-	srcregion  = RECTS_TO_REGION(pScreen, nbox, rects, CT_YXBANDED);
+	/* This must match the miRegionCopy() logic for reversing rect order */
+	if (nbox == 1 || (dx > 0 && dy > 0) ||
+	    (pDstDrawable != pSrcDrawable &&
+	     (pDstDrawable->type != DRAWABLE_WINDOW ||
+	      pSrcDrawable->type != DRAWABLE_WINDOW)))
+	    ordering = CT_YXBANDED;
+	else
+	    ordering = CT_UNSORTED;
+
+	srcregion  = RECTS_TO_REGION(pScreen, nbox, rects, ordering);
 	xfree(rects);
 
 	if (!pGC || !exaGCReadsDestination(pDstDrawable, pGC->planemask,