diff options
author | marha <marha@users.sourceforge.net> | 2009-09-02 21:09:13 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2009-09-02 21:09:13 +0000 |
commit | 8fedf58693f42869528b41408ac4d6012839e973 (patch) | |
tree | 62a817bea7dfc71050292d302ba94f5e349c67a7 /xorg-server/exa/exa_accel.c | |
parent | ac14083f465166b298162a57fff0bad90e528fff (diff) | |
parent | 6f25a23db1df27e992c34f6fd4c82e83c44fc2e2 (diff) | |
download | vcxsrv-8fedf58693f42869528b41408ac4d6012839e973.tar.gz vcxsrv-8fedf58693f42869528b41408ac4d6012839e973.tar.bz2 vcxsrv-8fedf58693f42869528b41408ac4d6012839e973.zip |
svn merge https://vcxsrv.svn.sourceforge.net/svnroot/vcxsrv/branches/released .
Diffstat (limited to 'xorg-server/exa/exa_accel.c')
-rw-r--r-- | xorg-server/exa/exa_accel.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/xorg-server/exa/exa_accel.c b/xorg-server/exa/exa_accel.c index 6970382b9..9e65d74a1 100644 --- a/xorg-server/exa/exa_accel.c +++ b/xorg-server/exa/exa_accel.c @@ -415,6 +415,7 @@ exaCopyNtoN (DrawablePtr pSrcDrawable, if (rects) { int i; + int ordering; for (i = 0; i < nbox; i++) { rects[i].x = pbox[i].x1 + dx + src_off_x; @@ -423,7 +424,16 @@ exaCopyNtoN (DrawablePtr pSrcDrawable, rects[i].height = pbox[i].y2 - pbox[i].y1; } - srcregion = RECTS_TO_REGION(pScreen, nbox, rects, CT_YXBANDED); + /* This must match the miRegionCopy() logic for reversing rect order */ + if (nbox == 1 || (dx > 0 && dy > 0) || + (pDstDrawable != pSrcDrawable && + (pDstDrawable->type != DRAWABLE_WINDOW || + pSrcDrawable->type != DRAWABLE_WINDOW))) + ordering = CT_YXBANDED; + else + ordering = CT_UNSORTED; + + srcregion = RECTS_TO_REGION(pScreen, nbox, rects, ordering); xfree(rects); if (!pGC || !exaGCReadsDestination(pDstDrawable, pGC->planemask, |