summaryrefslogtreecommitdiff
path: root/xserver/exa
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu.herrb@laas.fr>2012-12-16 18:33:35 +0100
committerMatthieu Herrb <matthieu.herrb@laas.fr>2012-12-16 18:33:35 +0100
commitb2e9e29b589a8bc859e672ad9d8117c96fbfa44e (patch)
tree24adced79716e90bf00b0de3f1335eef189295f8 /xserver/exa
parenta1e41c27a1152a638a43091b4f722ad8ea84fcef (diff)
update to xserver 1.13.1
Diffstat (limited to 'xserver/exa')
-rw-r--r--xserver/exa/Makefile.in2
-rw-r--r--xserver/exa/exa_priv.h1
-rw-r--r--xserver/exa/exa_unaccel.c16
3 files changed, 14 insertions, 5 deletions
diff --git a/xserver/exa/Makefile.in b/xserver/exa/Makefile.in
index 392be46c9..d2228d548 100644
--- a/xserver/exa/Makefile.in
+++ b/xserver/exa/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.12.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
diff --git a/xserver/exa/exa_priv.h b/xserver/exa/exa_priv.h
index ea7e7faff..2e4759def 100644
--- a/xserver/exa/exa_priv.h
+++ b/xserver/exa/exa_priv.h
@@ -209,6 +209,7 @@ typedef struct {
RegionRec srcReg;
RegionRec maskReg;
PixmapPtr srcPix;
+ PixmapPtr maskPix;
DevPrivateKeyRec pixmapPrivateKeyRec;
DevPrivateKeyRec gcPrivateKeyRec;
diff --git a/xserver/exa/exa_unaccel.c b/xserver/exa/exa_unaccel.c
index 571613886..b0a0011cb 100644
--- a/xserver/exa/exa_unaccel.c
+++ b/xserver/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);