Module Name:    xsrc
Committed By:   riz
Date:           Tue Nov 20 22:50:02 UTC 2012

Modified Files:
        xsrc/external/mit/xorg-server/dist/exa [netbsd-6-0]: exa_priv.h
            exa_unaccel.c

Log Message:
Pull up following revision(s) (requested by abs in ticket #673):
        external/mit/xorg-server/dist/exa/exa_unaccel.c: revision 1.2
        external/mit/xorg-server/dist/exa/exa_priv.h: revision 1.2
Apply patch https://bugs.freedesktop.org/attachment.cgi?id=68718
(with whitespace tweaks) from
https://bugs.freedesktop.org/show_bug.cgi?id=47266
to address graphics corruption using recent Cairo, manifested most
commonly by certain rendered text sections appearing as solid rectangular
blocks of colour.
Should be pulled up to netbsd-6 (and probably -5)


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.4 -r1.1.1.4.4.1 \
    xsrc/external/mit/xorg-server/dist/exa/exa_priv.h
cvs rdiff -u -r1.1.1.6 -r1.1.1.6.4.1 \
    xsrc/external/mit/xorg-server/dist/exa/exa_unaccel.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xorg-server/dist/exa/exa_priv.h
diff -u xsrc/external/mit/xorg-server/dist/exa/exa_priv.h:1.1.1.4 xsrc/external/mit/xorg-server/dist/exa/exa_priv.h:1.1.1.4.4.1
--- xsrc/external/mit/xorg-server/dist/exa/exa_priv.h:1.1.1.4	Tue Nov 23 05:21:03 2010
+++ xsrc/external/mit/xorg-server/dist/exa/exa_priv.h	Tue Nov 20 22:50:02 2012
@@ -206,6 +206,7 @@ typedef struct {
     RegionRec srcReg;
     RegionRec maskReg;
     PixmapPtr srcPix;
+    PixmapPtr maskPix;
 
 } ExaScreenPrivRec, *ExaScreenPrivPtr;
 

Index: xsrc/external/mit/xorg-server/dist/exa/exa_unaccel.c
diff -u xsrc/external/mit/xorg-server/dist/exa/exa_unaccel.c:1.1.1.6 xsrc/external/mit/xorg-server/dist/exa/exa_unaccel.c:1.1.1.6.4.1
--- xsrc/external/mit/xorg-server/dist/exa/exa_unaccel.c:1.1.1.6	Tue Aug  2 06:56:46 2011
+++ xsrc/external/mit/xorg-server/dist/exa/exa_unaccel.c	Tue Nov 20 22:50:02 2012
@@ -449,6 +449,13 @@ ExaSrcValidate(DrawablePtr pDrawable,
     RegionPtr dst;
     int xoff, yoff;
 
+    if (pExaScr->srcPix == pPix)
+        dst = &pExaScr->srcReg;
+    else if (pExaScr->maskPix == pPix)
+        dst = &pExaScr->maskReg;
+    else
+        return;
+
     exaGetDrawableDeltas(pDrawable, pPix, &xoff, &yoff);
 
     box.x1 = x + xoff;
@@ -456,9 +463,6 @@ ExaSrcValidate(DrawablePtr pDrawable,
     box.x2 = box.x1 + width;
     box.y2 = box.y1 + height;
 
-    dst = (pExaScr->srcPix == pPix) ? &pExaScr->srcReg :
-	&pExaScr->maskReg;
-
     RegionInit(&reg, &box, 1);
     RegionUnion(dst, dst, &reg);
     RegionUninit(&reg);
@@ -507,17 +511,20 @@ ExaPrepareCompositeReg(ScreenPtr  pScree
 	    RegionTranslate(pSrc->pCompositeClip,
 			     -pSrc->pDrawable->x,
 			     -pSrc->pDrawable->y);
-    }
+    } else
+        pExaScr->srcPix = NULL;
 
     if (pMask && pMask->pDrawable) {
 	pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
 	RegionNull(&pExaScr->maskReg);
 	maskReg = &pExaScr->maskReg;
+        pExaScr->maskPix = pMaskPix;
 	if (pMask != pDst && pMask != pSrc)
 	    RegionTranslate(pMask->pCompositeClip,
 			     -pMask->pDrawable->x,
 			     -pMask->pDrawable->y);
-    }
+    } else
+        pExaScr->maskPix = NULL;
 
     RegionTranslate(pDst->pCompositeClip,
 		     -pDst->pDrawable->x,

Reply via email to