diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2008-09-27 17:13:32 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2008-09-27 17:17:58 +0100 |
commit | 95c3c069326a77a28eb49053c0ace9f1977e0378 (patch) | |
tree | cf97c81b655ed5ddef32c85970fdce2e22ef4747 /src/cairo-surface-fallback.c | |
parent | 922a5801164c2b2340a7b4a950820b07e72adadc (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.c | 4 |
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) { |