/[gentoo-x86]/x11-base/xorg-server/files/xorg-server-1.13.0-exa-track-source-pixmaps.patch
Gentoo

Contents of /x11-base/xorg-server/files/xorg-server-1.13.0-exa-track-source-pixmaps.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Sat Nov 10 23:23:30 2012 UTC (2 years ago) by chithanh
Branch: MAIN
Add patches to address cairo corruption, bug #409593, and mouse pointer issues in pre-xrandr-1.2 multi-monitor setups, bug #434572.

(Portage version: 2.1.11.31/cvs/Linux x86_64, unsigned Manifest commit)

1 From 395c9e17089a7e4ed46a747904b36b1fec94fab3 Mon Sep 17 00:00:00 2001
2 From: Michel Dänzer <michel.daenzer@amd.com>
3 Date: Mon, 29 Oct 2012 11:57:54 +0000
4 Subject: EXA: Track source/mask pixmaps more explicitly for Composite fallback regions.
5
6 In particular, make sure pExaScr->src/maskPix are cleared when the
7 corresponding pictures aren't associated with drawables, i.e. solid or gradient
8 pictures. Without this, we would in some cases associate the source/mask region
9 with unrelated pixmaps from previous Composite fallbacks, resulting in random
10 corruption.
11
12 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47266
13
14 Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
15 Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
16 Signed-off-by: Keith Packard <keithp@keithp.com>
17 (cherry picked from commit 1ca096d5e07221025c4c4110528772b7d94f15ee)
18 ---
19 diff --git a/exa/exa_priv.h b/exa/exa_priv.h
20 index ea7e7fa..2e4759d 100644
21 --- a/exa/exa_priv.h
22 +++ b/exa/exa_priv.h
23 @@ -209,6 +209,7 @@ typedef struct {
24 RegionRec srcReg;
25 RegionRec maskReg;
26 PixmapPtr srcPix;
27 + PixmapPtr maskPix;
28
29 DevPrivateKeyRec pixmapPrivateKeyRec;
30 DevPrivateKeyRec gcPrivateKeyRec;
31 diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
32 index 5716138..b0a0011 100644
33 --- a/exa/exa_unaccel.c
34 +++ b/exa/exa_unaccel.c
35 @@ -442,6 +442,13 @@ ExaSrcValidate(DrawablePtr pDrawable,
36 RegionPtr dst;
37 int xoff, yoff;
38
39 + if (pExaScr->srcPix == pPix)
40 + dst = &pExaScr->srcReg;
41 + else if (pExaScr->maskPix == pPix)
42 + dst = &pExaScr->maskReg;
43 + else
44 + return;
45 +
46 exaGetDrawableDeltas(pDrawable, pPix, &xoff, &yoff);
47
48 box.x1 = x + xoff;
49 @@ -449,8 +456,6 @@ ExaSrcValidate(DrawablePtr pDrawable,
50 box.x2 = box.x1 + width;
51 box.y2 = box.y1 + height;
52
53 - dst = (pExaScr->srcPix == pPix) ? &pExaScr->srcReg : &pExaScr->maskReg;
54 -
55 RegionInit(&reg, &box, 1);
56 RegionUnion(dst, dst, &reg);
57 RegionUninit(&reg);
58 @@ -495,16 +500,19 @@ ExaPrepareCompositeReg(ScreenPtr pScreen,
59 if (pSrc != pDst)
60 RegionTranslate(pSrc->pCompositeClip,
61 -pSrc->pDrawable->x, -pSrc->pDrawable->y);
62 - }
63 + } else
64 + pExaScr->srcPix = NULL;
65
66 if (pMask && pMask->pDrawable) {
67 pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
68 RegionNull(&pExaScr->maskReg);
69 maskReg = &pExaScr->maskReg;
70 + pExaScr->maskPix = pMaskPix;
71 if (pMask != pDst && pMask != pSrc)
72 RegionTranslate(pMask->pCompositeClip,
73 -pMask->pDrawable->x, -pMask->pDrawable->y);
74 - }
75 + } else
76 + pExaScr->maskPix = NULL;
77
78 RegionTranslate(pDst->pCompositeClip,
79 -pDst->pDrawable->x, -pDst->pDrawable->y);
80 --
81 cgit v0.9.0.2-2-gbebe

  ViewVC Help
Powered by ViewVC 1.1.20