summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2008-10-23 14:38:44 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2008-10-30 16:19:54 +0000
commit540f555840ba4076e3ab86669daf9bee5695afa2 (patch)
tree7100cb0ff551bd38a858e777a0722fa5cc46e5b8 /src
parent4b2998893930e4bab19646e6f0a0c8d2a47f12a2 (diff)
[analysis] Only limit to mask extends if bounded by mask.
The extents of cairo_mask() is only limited to the mask if the operation is bounded by the mask.
Diffstat (limited to 'src')
-rw-r--r--src/cairo-analysis-surface.c8
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);