diff options
author | Eric Anholt <eric@anholt.net> | 2006-11-01 14:29:59 -0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2006-11-01 14:41:12 -0800 |
commit | 6fdfd9dad91d7b7aa292f8c4d268dd27c34de8d3 (patch) | |
tree | 6cbe252a3e739313cc9b56dd6f2fb1fef0d09f73 /fb/fbpict.c | |
parent | 40f84793bca40dcc6883d51aefa1bda44bd1ac61 (diff) |
Fix several cases where optimized paths were hit when they shouldn't be.
This fixes a number of rendercheck cases.
Diffstat (limited to 'fb/fbpict.c')
-rw-r--r-- | fb/fbpict.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/fb/fbpict.c b/fb/fbpict.c index d839994ae..28503c0cf 100644 --- a/fb/fbpict.c +++ b/fb/fbpict.c @@ -930,9 +930,8 @@ fbComposite (CARD8 op, case PictOpOver: if (pMask) { - if (srcRepeat && - pSrc->pDrawable->width == 1 && - pSrc->pDrawable->height == 1) + if (fbCanGetSolid(pSrc) && + !maskRepeat) { srcRepeat = FALSE; if (PICT_FORMAT_COLOR(pSrc->format)) { @@ -1044,7 +1043,7 @@ fbComposite (CARD8 op, { if (pSrc->pDrawable == pMask->pDrawable && xSrc == xMask && ySrc == yMask && - !pMask->componentAlpha) + !pMask->componentAlpha && !maskRepeat) { /* source == mask: non-premultiplied data */ switch (pSrc->format) { @@ -1108,9 +1107,7 @@ fbComposite (CARD8 op, else { /* non-repeating source, repeating mask => translucent window */ - if (maskRepeat && - pMask->pDrawable->width == 1 && - pMask->pDrawable->height == 1) + if (fbCanGetSolid(pMask)) { if (pSrc->format == PICT_x8r8g8b8 && pDst->format == PICT_x8r8g8b8 && @@ -1127,9 +1124,7 @@ fbComposite (CARD8 op, } else /* no mask */ { - if (srcRepeat && - pSrc->pDrawable->width == 1 && - pSrc->pDrawable->height == 1) + if (fbCanGetSolid(pSrc)) { /* no mask and repeating source */ switch (pSrc->format) { |