diff options
Diffstat (limited to 'uxa/uxa-render.c')
-rw-r--r-- | uxa/uxa-render.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c index 0ba8b9d6..93930585 100644 --- a/uxa/uxa-render.c +++ b/uxa/uxa-render.c @@ -1362,12 +1362,16 @@ uxa_composite(CARD8 op, if (pSrc->pSourcePict) { SourcePict *source = pSrc->pSourcePict; if (source->type == SourcePictTypeSolidFill) { - ret = uxa_try_driver_solid_fill(pSrc, pDst, - xSrc, ySrc, - xDst, yDst, - width, height); - if (ret == 1) - goto done; + if (op == PictOpSrc || + (op == PictOpOver && + (source->solidFill.color & 0xff000000) == 0xff000000)) { + ret = uxa_try_driver_solid_fill(pSrc, pDst, + xSrc, ySrc, + xDst, yDst, + width, height); + if (ret == 1) + goto done; + } } } } else if (compatible_formats (op, pDst, pSrc)) { |