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

Reply via email to