summaryrefslogtreecommitdiff
path: root/src/cairo-surface-fallback.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2008-09-27 17:13:32 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2008-09-27 17:17:58 +0100
commit95c3c069326a77a28eb49053c0ace9f1977e0378 (patch)
treecf97c81b655ed5ddef32c85970fdce2e22ef4747 /src/cairo-surface-fallback.c
parent922a5801164c2b2340a7b4a950820b07e72adadc (diff)
[surface] Only return early for no traps if the operator is bounded by a mask.
If the operator is unbounded, then its area of effect extends beyond the definition of the mask by the trapezoids and so we must always perform the image composition. Fixes test/operator*.
Diffstat (limited to 'src/cairo-surface-fallback.c')
-rw-r--r--src/cairo-surface-fallback.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/cairo-surface-fallback.c b/src/cairo-surface-fallback.c
index 056ea4ec..e744b91f 100644
--- a/src/cairo-surface-fallback.c
+++ b/src/cairo-surface-fallback.c
@@ -527,16 +527,14 @@ _clip_and_composite_trapezoids (cairo_pattern_t *src,
cairo_rectangle_int_t extents;
cairo_composite_traps_info_t traps_info;
- if (traps->num_traps == 0)
+ if (_cairo_operator_bounded_by_mask (op) && traps->num_traps == 0)
return CAIRO_STATUS_SUCCESS;
status = _cairo_surface_get_extents (dst, &extents);
-
if (status)
return status;
status = _cairo_traps_extract_region (traps, &trap_region);
-
if (CAIRO_INT_STATUS_UNSUPPORTED == status) {
has_trap_region = FALSE;
} else if (status) {