summaryrefslogtreecommitdiff
path: root/src/cairo-traps.c
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2008-12-11 15:29:23 -0500
committerSøren Sandmann Pedersen <sandmann@daimi.au.dk>2009-03-28 17:58:48 -0400
commite3e1b35eb9eb3cf90d882a7452580f9efe00b89a (patch)
tree8b453b46051067c8745636960a55bea3b1ab1123 /src/cairo-traps.c
parentc2c637cf1d89fc8fdcced4467d602a55ef0b14e0 (diff)
downloadcairo-e3e1b35eb9eb3cf90d882a7452580f9efe00b89a.tar.gz
[region] Make cairo_region_t a malloced object.
Diffstat (limited to 'src/cairo-traps.c')
-rw-r--r--src/cairo-traps.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/cairo-traps.c b/src/cairo-traps.c
index 0afdce23a..3b6dedf7c 100644
--- a/src/cairo-traps.c
+++ b/src/cairo-traps.c
@@ -608,7 +608,7 @@ _cairo_traps_extents (const cairo_traps_t *traps,
**/
cairo_int_status_t
_cairo_traps_extract_region (const cairo_traps_t *traps,
- cairo_region_t *region)
+ cairo_region_t **region)
{
cairo_box_int_t stack_boxes[CAIRO_STACK_ARRAY_LENGTH (cairo_box_int_t)];
cairo_box_int_t *boxes = stack_boxes;
@@ -616,7 +616,7 @@ _cairo_traps_extract_region (const cairo_traps_t *traps,
cairo_int_status_t status;
if (traps->num_traps == 0) {
- _cairo_region_init (region);
+ *region = _cairo_region_create ();
return CAIRO_STATUS_SUCCESS;
}
@@ -661,13 +661,17 @@ _cairo_traps_extract_region (const cairo_traps_t *traps,
box_count++;
}
- status = _cairo_region_init_boxes (region, boxes, box_count);
-
+ *region = _cairo_region_create_boxes (boxes, box_count);
+ status = _cairo_region_status (*region);
+
if (boxes != stack_boxes)
free (boxes);
if (unlikely (status))
- _cairo_region_fini (region);
+ {
+ _cairo_region_destroy (*region);
+ *region = NULL;
+ }
return status;
}