From 4741d33cf67409a6fddbc32a5d0c8d68224cd939 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 13 May 2010 09:31:10 +0100 Subject: [PATCH] gstate: Don't reduce solid source and mask for SOURCE and CLEAR Not all operators are created equal, and this optimization breaks for SOURCE and CLEAR where the mask operates on the clip and not the source. --- src/cairo-gstate.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c index caed88b5c..78aab5080 100644 --- a/src/cairo-gstate.c +++ b/src/cairo-gstate.c @@ -1113,7 +1113,8 @@ _cairo_gstate_mask (cairo_gstate_t *gstate, _cairo_gstate_copy_transformed_mask (gstate, &mask_pattern.base, mask); if (source->type == CAIRO_PATTERN_TYPE_SOLID && - mask_pattern.type == CAIRO_PATTERN_TYPE_SOLID) + mask_pattern.type == CAIRO_PATTERN_TYPE_SOLID && + _cairo_operator_bounded_by_source (op)) { const cairo_solid_pattern_t *solid = (cairo_solid_pattern_t *) source; cairo_color_t combined;