EXA: Only pass CT_YXBANDED to RECTS_TO_REGION() if that is really true.
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=22642 .
This commit is contained in:
parent
2638e9899e
commit
3575854481
|
@ -394,6 +394,7 @@ exaHWCopyNtoN (DrawablePtr pSrcDrawable,
|
||||||
|
|
||||||
if (rects) {
|
if (rects) {
|
||||||
int i;
|
int i;
|
||||||
|
int ordering;
|
||||||
|
|
||||||
for (i = 0; i < nbox; i++) {
|
for (i = 0; i < nbox; i++) {
|
||||||
rects[i].x = pbox[i].x1 + dx + src_off_x;
|
rects[i].x = pbox[i].x1 + dx + src_off_x;
|
||||||
|
@ -402,7 +403,16 @@ exaHWCopyNtoN (DrawablePtr pSrcDrawable,
|
||||||
rects[i].height = pbox[i].y2 - pbox[i].y1;
|
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);
|
xfree(rects);
|
||||||
|
|
||||||
if (!pGC || !exaGCReadsDestination(pDstDrawable, pGC->planemask,
|
if (!pGC || !exaGCReadsDestination(pDstDrawable, pGC->planemask,
|
||||||
|
|
Loading…
Reference in New Issue