[cairo-commit] src/cairo-gstate.c

Chris Wilson ickle at kemper.freedesktop.org
Thu May 13 01:33:24 PDT 2010


 src/cairo-gstate.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit 4741d33cf67409a6fddbc32a5d0c8d68224cd939
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu May 13 09:31:10 2010 +0100

    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.

diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c
index caed88b..78aab50 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;


More information about the cairo-commit mailing list