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(®, &box, 1); RegionUnion(dst, dst, ®); RegionUninit(®); @@ -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,