diff options
author | marha <marha@users.sourceforge.net> | 2012-10-30 10:18:15 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-10-30 10:18:15 +0100 |
commit | 33d29586bf3a280e821e0bf62694492dba459dab (patch) | |
tree | e029e900674f4f8901cae65c95acd3e15ce3948c /xorg-server/exa | |
parent | af2d8fb974d476eadcd3cde3baebd038f5750600 (diff) | |
parent | 7b3f315a5d8b90dcb0db5512ed91fa700027cb7a (diff) | |
download | vcxsrv-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.h | 1 | ||||
-rw-r--r-- | xorg-server/exa/exa_unaccel.c | 16 |
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(®, &box, 1); RegionUnion(dst, dst, ®); RegionUninit(®); @@ -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); |