summaryrefslogtreecommitdiff
path: root/uxa/uxa-render.c
diff options
context:
space:
mode:
Diffstat (limited to 'uxa/uxa-render.c')
-rw-r--r--uxa/uxa-render.c16
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)) {