diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-11-13 18:35:44 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2009-11-13 19:05:22 +0000 |
commit | e9064eacb0ad8867e320597453facbb3c376522c (patch) | |
tree | de63aae7f976c1357719dcccde9f6e0a6c1accea | |
parent | 14109abf285866ad4cd99d0cd16b0954a0a73a62 (diff) |
uxa: Do not remove repeat from solids for 1x1 composites.
Or else we hit the buggy 1x1 source path and trigger:
rendercheck/mcoords regressed
http://bugs.freedesktop.org/show_bug.cgi?id=25046
caused by the recent commit e581ceb.
-rw-r--r-- | uxa/uxa-render.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c index ee1e4e10..79017b5e 100644 --- a/uxa/uxa-render.c +++ b/uxa/uxa-render.c @@ -856,7 +856,8 @@ uxa_composite(CARD8 op, goto composite; /* Remove repeat in source if useless */ - if (pSrc->repeat && !pSrc->transform && xSrc >= 0 && + if (pSrc->repeat && (pSrc->pDrawable->width > 1 || pSrc->pDrawable->height > 1 ) && + !pSrc->transform && xSrc >= 0 && (xSrc + width) <= pSrc->pDrawable->width && ySrc >= 0 && (ySrc + height) <= pSrc->pDrawable->height) pSrc->repeat = 0; @@ -872,8 +873,9 @@ uxa_composite(CARD8 op, && pSrc->format == pDst->format && (pSrc->format == PICT_x8r8g8b8 || pSrc->format == PICT_x8b8g8r8))) { - if (pSrc->pDrawable->width == 1 - && pSrc->pDrawable->height == 1 && pSrc->repeat) { + if (pSrc->pDrawable->width == 1 && + pSrc->pDrawable->height == 1 && + pSrc->repeat) { ret = uxa_try_driver_solid_fill(pSrc, pDst, xSrc, ySrc, xDst, yDst, @@ -964,6 +966,7 @@ uxa_composite(CARD8 op, composite: /* Remove repeat in mask if useless */ if (pMask && pMask->repeat && !pMask->transform && pMask->pDrawable && + (pMask->pDrawable->width > 1 || pMask->pDrawable->height > 1) && xMask >= 0 && (xMask + width) <= pMask->pDrawable->width && yMask >= 0 && (yMask + height) <= pMask->pDrawable->height) pMask->repeat = 0; |