summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cairo-image-compositor.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/cairo-image-compositor.c b/src/cairo-image-compositor.c
index 150efdb2..be3db984 100644
--- a/src/cairo-image-compositor.c
+++ b/src/cairo-image-compositor.c
@@ -2933,11 +2933,19 @@ span_renderer_init (cairo_abstract_span_renderer_t *_r,
op == CAIRO_OPERATOR_ADD)) {
op = PIXMAN_OP_SRC;
} else if (op == CAIRO_OPERATOR_SOURCE) {
+ if (_cairo_pattern_is_opaque (&composite->source_pattern.base,
+ &composite->source_sample_area))
+ {
+ op = PIXMAN_OP_OVER;
+ }
+ else
+ {
#if PIXMAN_HAS_OP_LERP
- op = PIXMAN_OP_LERP_SRC;
+ op = PIXMAN_OP_LERP_SRC;
#else
- return CAIRO_INT_STATUS_UNSUPPORTED;
+ return CAIRO_INT_STATUS_UNSUPPORTED;
#endif
+ }
} else {
op = _pixman_operator (op);
}