diff options
author | Matthieu Herrb <matthieu.herrb@laas.fr> | 2012-12-16 18:33:35 +0100 |
---|---|---|
committer | Matthieu Herrb <matthieu.herrb@laas.fr> | 2012-12-16 18:33:35 +0100 |
commit | b2e9e29b589a8bc859e672ad9d8117c96fbfa44e (patch) | |
tree | 24adced79716e90bf00b0de3f1335eef189295f8 /xserver/exa | |
parent | a1e41c27a1152a638a43091b4f722ad8ea84fcef (diff) |
update to xserver 1.13.1
Diffstat (limited to 'xserver/exa')
-rw-r--r-- | xserver/exa/Makefile.in | 2 | ||||
-rw-r--r-- | xserver/exa/exa_priv.h | 1 | ||||
-rw-r--r-- | xserver/exa/exa_unaccel.c | 16 |
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(®, &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); |