diff options
Diffstat (limited to 'src/cairo-pixman-surface.c')
-rw-r--r-- | src/cairo-pixman-surface.c | 6 |
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, ®ion->rgn); + /* First add the boxes */ if (!(ptraps = malloc (clip->num_boxes * sizeof (pixman_trapezoid_t)))) return command_buffer_new_broken (buffer); |