From ccf67c7d748aa10005fb47b4d565c34e41c1a327 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 29 Jul 2011 13:06:49 +0100 Subject: [PATCH] pdf: Don't remove the current clip if redundant If the surface already has a clip set and that clip does not interfere with the operation then we can leave it set. Signed-off-by: Chris Wilson --- src/cairo-pdf-surface.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c index 1e6b22c7a..d6f382bb0 100644 --- a/src/cairo-pdf-surface.c +++ b/src/cairo-pdf-surface.c @@ -5756,6 +5756,17 @@ _cairo_pdf_surface_set_clip (cairo_pdf_surface_t *surface, clip = NULL; } + if (clip == NULL) { + cairo_clip_t *current = surface->clipper.clip; + + if (current && _cairo_clip_is_region (current) && + cairo_region_contains_rectangle (_cairo_clip_get_region (current), + &composite->unbounded) == CAIRO_REGION_OVERLAP_IN) + { + return CAIRO_STATUS_SUCCESS; + } + } + return _cairo_surface_clipper_set_clip (&surface->clipper, clip); }