From 562cc8227feb99b75fb53df7800df66887be129d Mon Sep 17 00:00:00 2001 From: Ravi Nanjundappa Date: Mon, 6 Feb 2012 10:56:55 +0530 Subject: [PATCH] gl/spans: Handle SOURCE operations with opaque sources. SOURCE operations with an opaque are equivalent to OVER. This can prevent us from falling back in certain cases. Signed-off-by: Chris Wilson --- src/cairo-gl-spans-compositor.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/cairo-gl-spans-compositor.c b/src/cairo-gl-spans-compositor.c index c5d97aa7d..4317ccd07 100644 --- a/src/cairo-gl-spans-compositor.c +++ b/src/cairo-gl-spans-compositor.c @@ -431,6 +431,13 @@ _cairo_gl_span_renderer_init (cairo_abstract_span_renderer_t *_r, cairo_operator_t op = composite->op; cairo_int_status_t status; + if (op == CAIRO_OPERATOR_SOURCE) { + if (! _cairo_pattern_is_opaque (&composite->source_pattern.base, + &composite->source_sample_area)) + return CAIRO_INT_STATUS_UNSUPPORTED; + op = CAIRO_OPERATOR_OVER; + } + /* XXX earlier! */ if (op == CAIRO_OPERATOR_CLEAR) { source = &_cairo_pattern_white.base;