From 09589e20e14476df609581027d14628f52091e71 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 10 Dec 2008 23:45:44 +0000 Subject: [PATCH] [clip] Intersect to region extents. When querying the intersection of a rectangle with the clip region, the result only depends upon the region extents so we do not need to perform an expensive region-region intersection computation. --- src/cairo-clip.c | 18 +++++------------- src/cairo-surface-fallback.c | 1 - 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/cairo-clip.c b/src/cairo-clip.c index cd423a443..c679e9fb2 100644 --- a/src/cairo-clip.c +++ b/src/cairo-clip.c @@ -179,20 +179,12 @@ _cairo_clip_intersect_to_rectangle (cairo_clip_t *clip, } if (clip->has_region) { - cairo_region_t intersection; + cairo_rectangle_int_t extents; - _cairo_region_init_rect (&intersection, rectangle); - - status = _cairo_region_intersect (&intersection, &clip->region, - &intersection); - - if (!status) - _cairo_region_get_extents (&intersection, rectangle); - - _cairo_region_fini (&intersection); - - if (unlikely (status)) - return status; + _cairo_region_get_extents (&clip->region, &extents); + is_empty = _cairo_rectangle_intersect (rectangle, &extents); + if (is_empty) + return CAIRO_STATUS_SUCCESS; } if (clip->surface) diff --git a/src/cairo-surface-fallback.c b/src/cairo-surface-fallback.c index f21c6ea45..b48435df7 100644 --- a/src/cairo-surface-fallback.c +++ b/src/cairo-surface-fallback.c @@ -578,7 +578,6 @@ _clip_and_composite_trapezoids (const cairo_pattern_t *src, has_clear_region = TRUE; status = _cairo_clip_intersect_to_region (clip, &clear_region); - if (unlikely (status)) goto out;