diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cairo-analysis-surface.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/cairo-analysis-surface.c b/src/cairo-analysis-surface.c index 90eb3f56..057be529 100644 --- a/src/cairo-analysis-surface.c +++ b/src/cairo-analysis-surface.c @@ -416,12 +416,16 @@ _cairo_analysis_surface_mask (void *abstract_surface, return status; is_empty = _cairo_rectangle_intersect (&extents, &source_extents); + } + + if (_cairo_operator_bounded_by_mask (op)) { + cairo_rectangle_int_t mask_extents; - status = _cairo_pattern_get_extents (mask, &source_extents); + status = _cairo_pattern_get_extents (mask, &mask_extents); if (status) return status; - is_empty = _cairo_rectangle_intersect (&extents, &source_extents); + is_empty = _cairo_rectangle_intersect (&extents, &mask_extents); } is_empty = _cairo_rectangle_intersect (&extents, &surface->current_clip); |