summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2012-10-01 09:24:54 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2012-10-01 09:24:54 -0400
commit644c2143eb023b6e26e22207a135621e969f27f0 (patch)
tree9a55cd84602d772a5e50c1de5695e12eeb451643
parent1456650747bcb3ee7789288a03672b6522879fd0 (diff)
Extract clip region
-rw-r--r--src/cairo-pixman-surface.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cairo-pixman-surface.c b/src/cairo-pixman-surface.c
index 3831fe59..63148462 100644
--- a/src/cairo-pixman-surface.c
+++ b/src/cairo-pixman-surface.c
@@ -46,6 +46,7 @@
#include "cairo-clip-inline.h"
#include "cairo-traps-private.h"
#include "cairoint.h"
+#include "cairo-region-private.h"
extern const cairo_surface_backend_t cairo_pixman_surface_backend;
@@ -783,7 +784,6 @@ out:
return status;
}
-
static void
set_properties (pixman_image_t *image, cairo_pattern_t *pattern, cairo_matrix_t *matrix)
{
@@ -1304,12 +1304,16 @@ create_clip_image (command_buffer_t **buffer,
cairo_clip_path_t *clip_path;
int i;
int boxes, clip_id, wh;
+ cairo_region_t *region;
status = CAIRO_INT_STATUS_SUCCESS;
if (!clip)
return command_buffer_new_white (buffer);
+ if ((region = _cairo_clip_get_region (clip)))
+ return command_buffer_new_region (buffer, &region->rgn);
+
/* First add the boxes */
if (!(ptraps = malloc (clip->num_boxes * sizeof (pixman_trapezoid_t))))
return command_buffer_new_broken (buffer);