diff --git a/src/cairo-mask-compositor.c b/src/cairo-mask-compositor.c index 34e5fbbc3..7bee37244 100644 --- a/src/cairo-mask-compositor.c +++ b/src/cairo-mask-compositor.c @@ -174,7 +174,7 @@ create_composite_mask (const cairo_mask_compositor_t *compositor, return _cairo_surface_create_in_error (status); } - { + if (!surface->is_clear) { cairo_rectangle_int_t rect; rect.x = rect.y = 0; @@ -231,6 +231,7 @@ create_composite_mask (const cairo_mask_compositor_t *compositor, out: compositor->release (surface); + surface->is_clear = FALSE; return surface; error: diff --git a/src/cairo-traps-compositor.c b/src/cairo-traps-compositor.c index 146089d02..a822f8e05 100644 --- a/src/cairo-traps-compositor.c +++ b/src/cairo-traps-compositor.c @@ -356,7 +356,7 @@ create_composite_mask (const cairo_traps_compositor_t *compositor, return _cairo_surface_create_in_error (status); } - { + if (!surface->is_clear) { cairo_boxes_t clear; _cairo_boxes_init_from_rectangle (&clear, @@ -423,6 +423,7 @@ create_composite_mask (const cairo_traps_compositor_t *compositor, out: compositor->release (surface); cairo_surface_destroy (src); + surface->is_clear = FALSE; return surface; error: