Hello community, here is the log from the commit of package xorg-x11-server for openSUSE:Factory checked in at 2012-10-31 07:04:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old) and /work/SRC/openSUSE:Factory/.xorg-x11-server.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorg-x11-server", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes 2012-10-16 12:58:48.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.xorg-x11-server.new/xorg-x11-server.changes 2012-10-31 07:04:25.000000000 +0100 @@ -1,0 +2,11 @@ +Tue Oct 30 10:45:57 UTC 2012 - [email protected] + +- U_EXA-Track-source-mask-pixmaps-more-explicitly-for-Co.patch + Track source/mask pixmaps more explicitly for Composite fallback regions. + In particular, make sure pExaScr->src/maskPix are cleared when the + corresponding pictures aren't associated with drawables, i.e. solid or + gradient pictures. Without this, we would in some cases associate the + source/mask region with unrelated pixmaps from previous Composite + fallbacks, resulting in random corruption. (bnc#786153, fdo#47266) + +------------------------------------------------------------------- New: ---- U_EXA-Track-source-mask-pixmaps-more-explicitly-for-Co.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xorg-x11-server.spec ++++++ --- /var/tmp/diff_new_pack.mmtfN3/_old 2012-10-31 07:04:27.000000000 +0100 +++ /var/tmp/diff_new_pack.mmtfN3/_new 2012-10-31 07:04:27.000000000 +0100 @@ -175,6 +175,7 @@ Patch222: N_sync-fix.patch Patch225: u_Do-not-use-intel-driver-on-Poulsbo-Oaktrail-Medfield.patch Patch226: u_vgaHW-no-legacy.patch +Patch227: U_EXA-Track-source-mask-pixmaps-more-explicitly-for-Co.patch %description This package contains the X.Org Server. @@ -293,6 +294,7 @@ #%patch222 -p1 %patch225 -p1 %patch226 -p0 +%patch227 -p1 %build autoreconf -fi ++++++ U_EXA-Track-source-mask-pixmaps-more-explicitly-for-Co.patch ++++++ >From 1ca096d5e07221025c4c4110528772b7d94f15ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <[email protected]> Date: Mon, 29 Oct 2012 12:57:54 +0100 Subject: [PATCH] EXA: Track source/mask pixmaps more explicitly for Composite fallback regions. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In particular, make sure pExaScr->src/maskPix are cleared when the corresponding pictures aren't associated with drawables, i.e. solid or gradient pictures. Without this, we would in some cases associate the source/mask region with unrelated pixmaps from previous Composite fallbacks, resulting in random corruption. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47266 Signed-off-by: Michel Dänzer <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Keith Packard <[email protected]> --- exa/exa_priv.h | 1 + exa/exa_unaccel.c | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/exa/exa_priv.h b/exa/exa_priv.h index 7007578..1f56056 100644 --- a/exa/exa_priv.h +++ b/exa/exa_priv.h @@ -208,6 +208,7 @@ typedef struct { RegionRec srcReg; RegionRec maskReg; PixmapPtr srcPix; + PixmapPtr maskPix; DevPrivateKeyRec pixmapPrivateKeyRec; DevPrivateKeyRec gcPrivateKeyRec; diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c index 5716138..b0a0011 100644 --- a/exa/exa_unaccel.c +++ b/exa/exa_unaccel.c @@ -442,6 +442,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; @@ -449,8 +456,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(®); @@ -495,16 +500,19 @@ ExaPrepareCompositeReg(ScreenPtr pScreen, if (pSrc != pDst) 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, -pDst->pDrawable->y); -- 1.7.3.4 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
