From: Michel Dänzer <[email protected]>

Fixes incorrectly skipped rendering of some Composite operations to windows.

Signed-off-by: Michel Dänzer <[email protected]>
---
 exa/exa_unaccel.c |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
index 1bc3eac..b100af2 100644
--- a/exa/exa_unaccel.c
+++ b/exa/exa_unaccel.c
@@ -423,11 +423,33 @@ ExaCheckComposite (CARD8      op,
     if (!exaOpReadsDestination(op) && pExaScr->prepare_access_reg) {
        PixmapPtr pDstPix;
 
+       if (pSrc->pDrawable) {
+           xSrc += pSrc->pDrawable->x;
+           ySrc += pSrc->pDrawable->y;
+       }
+
+       if (pMask && pMask->pDrawable) {
+           xMask += pMask->pDrawable->x;
+           yMask += pMask->pDrawable->y;
+       }
+
        if (!miComputeCompositeRegion (&region, pSrc, pMask, pDst,
-                                      xSrc, ySrc, xMask, yMask, xDst, yDst,
+                                      xSrc, ySrc, xMask, yMask,
+                                      xDst + pDst->pDrawable->x,
+                                      yDst + pDst->pDrawable->y,
                                       width, height))
            goto skip;
 
+       if (pSrc->pDrawable) {
+           xSrc -= pSrc->pDrawable->x;
+           ySrc -= pSrc->pDrawable->y;
+       }
+
+       if (pMask && pMask->pDrawable) {
+           xMask -= pMask->pDrawable->x;
+           yMask -= pMask->pDrawable->y;
+       }
+
        pDstPix = exaGetDrawablePixmap(pDst->pDrawable);
        exaGetDrawableDeltas (pDst->pDrawable, pDstPix, &xoff, &yoff);
        REGION_TRANSLATE(pScreen, &region, xoff, yoff);
-- 
1.6.4.3

_______________________________________________
xorg-devel mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to