1
diff --git a/exa/exa_priv.h b/exa/exa_priv.h
2
index 70de4bd..60aa328 100644
5
@@ -206,6 +206,7 @@ typedef struct {
11
} ExaScreenPrivRec, *ExaScreenPrivPtr;
13
diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
14
index 219f903..7d83d15 100644
15
--- a/exa/exa_unaccel.c
16
+++ b/exa/exa_unaccel.c
17
@@ -448,6 +448,13 @@ ExaSrcValidate(DrawablePtr pDrawable,
21
+ if (pExaScr->srcPix == pPix)
22
+ dst = &pExaScr->srcReg;
23
+ else if (pExaScr->maskPix == pPix)
24
+ dst = &pExaScr->maskReg;
28
exaGetDrawableDeltas(pDrawable, pPix, &xoff, &yoff);
31
@@ -455,9 +462,6 @@ ExaSrcValidate(DrawablePtr pDrawable,
32
box.x2 = box.x1 + width;
33
box.y2 = box.y1 + height;
35
- dst = (pExaScr->srcPix == pPix) ? &pExaScr->srcReg :
38
RegionInit(®, &box, 1);
39
RegionUnion(dst, dst, ®);
41
@@ -506,17 +510,20 @@ ExaPrepareCompositeReg(ScreenPtr pScreen,
42
RegionTranslate(pSrc->pCompositeClip,
47
+ pExaScr->srcPix = NULL;
49
if (pMask && pMask->pDrawable) {
50
pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
51
RegionNull(&pExaScr->maskReg);
52
maskReg = &pExaScr->maskReg;
53
+ pExaScr->maskPix = pMaskPix;
54
if (pMask != pDst && pMask != pSrc)
55
RegionTranslate(pMask->pCompositeClip,
57
-pMask->pDrawable->y);
60
+ pExaScr->maskPix = NULL;
62
RegionTranslate(pDst->pCompositeClip,