aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/exa
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-10-30 10:18:15 +0100
committermarha <marha@users.sourceforge.net>2012-10-30 10:18:15 +0100
commit33d29586bf3a280e821e0bf62694492dba459dab (patch)
treee029e900674f4f8901cae65c95acd3e15ce3948c /xorg-server/exa
parentaf2d8fb974d476eadcd3cde3baebd038f5750600 (diff)
parent7b3f315a5d8b90dcb0db5512ed91fa700027cb7a (diff)
downloadvcxsrv-33d29586bf3a280e821e0bf62694492dba459dab.tar.gz
vcxsrv-33d29586bf3a280e821e0bf62694492dba459dab.tar.bz2
vcxsrv-33d29586bf3a280e821e0bf62694492dba459dab.zip
Merge remote-tracking branch 'origin/released'
* origin/released: fontconfig xserver mesa git update 30 oct 2012 Conflicts: xorg-server/dix/grabs.c xorg-server/hw/xwin/winclipboard.h xorg-server/hw/xwin/winclipboardthread.c xorg-server/hw/xwin/winclipboardwrappers.c xorg-server/hw/xwin/winmonitors.c xorg-server/hw/xwin/winmsg.c xorg-server/hw/xwin/winmsg.h xorg-server/hw/xwin/winprefslex.l xorg-server/hw/xwin/winprefsyacc.y xorg-server/hw/xwin/winregistry.c
Diffstat (limited to 'xorg-server/exa')
-rw-r--r--xorg-server/exa/exa_priv.h1
-rw-r--r--xorg-server/exa/exa_unaccel.c16
2 files changed, 13 insertions, 4 deletions
diff --git a/xorg-server/exa/exa_priv.h b/xorg-server/exa/exa_priv.h
index 70075786a..1f5605687 100644
--- a/xorg-server/exa/exa_priv.h
+++ b/xorg-server/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/xorg-server/exa/exa_unaccel.c b/xorg-server/exa/exa_unaccel.c
index fc0f6c42e..3bfbb4fe9 100644
--- a/xorg-server/exa/exa_unaccel.c
+++ b/xorg-server/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);