diff --git a/boilerplate/cairo-boilerplate-pdf.c b/boilerplate/cairo-boilerplate-pdf.c index d45e6ca80..8459f5824 100644 --- a/boilerplate/cairo-boilerplate-pdf.c +++ b/boilerplate/cairo-boilerplate-pdf.c @@ -137,6 +137,7 @@ _cairo_boilerplate_pdf_finish_surface (cairo_surface_t *surface) if (status) return status; + cairo_surface_finish (surface); status = cairo_surface_status (surface); if (status) return status; @@ -204,8 +205,10 @@ static void _cairo_boilerplate_pdf_cleanup (void *closure) { pdf_target_closure_t *ptc = closure; - if (ptc->target) + if (ptc->target) { + cairo_surface_finish (ptc->target); cairo_surface_destroy (ptc->target); + } free (ptc->filename); free (ptc); } diff --git a/boilerplate/cairo-boilerplate-ps.c b/boilerplate/cairo-boilerplate-ps.c index a0a5447f0..20452d820 100644 --- a/boilerplate/cairo-boilerplate-ps.c +++ b/boilerplate/cairo-boilerplate-ps.c @@ -197,6 +197,7 @@ _cairo_boilerplate_ps_finish_surface (cairo_surface_t *surface) if (status) return status; + cairo_surface_finish (surface); status = cairo_surface_status (surface); if (status) return status; @@ -269,8 +270,10 @@ static void _cairo_boilerplate_ps_cleanup (void *closure) { ps_target_closure_t *ptc = closure; - if (ptc->target) + if (ptc->target) { + cairo_surface_finish (ptc->target); cairo_surface_destroy (ptc->target); + } free (ptc->filename); free (ptc); } diff --git a/boilerplate/cairo-boilerplate-svg.c b/boilerplate/cairo-boilerplate-svg.c index 43305da87..583f9a16e 100644 --- a/boilerplate/cairo-boilerplate-svg.c +++ b/boilerplate/cairo-boilerplate-svg.c @@ -170,6 +170,7 @@ _cairo_boilerplate_svg_finish_surface (cairo_surface_t *surface) if (status) return status; + cairo_surface_finish (surface); status = cairo_surface_status (surface); if (status) return status; @@ -241,8 +242,10 @@ static void _cairo_boilerplate_svg_cleanup (void *closure) { svg_target_closure_t *ptc = closure; - if (ptc->target) + if (ptc->target) { + cairo_surface_finish (ptc->target); cairo_surface_destroy (ptc->target); + } free (ptc->filename); free (ptc); } diff --git a/boilerplate/cairo-boilerplate.c b/boilerplate/cairo-boilerplate.c index e0bf51a4b..062c99e92 100644 --- a/boilerplate/cairo-boilerplate.c +++ b/boilerplate/cairo-boilerplate.c @@ -180,13 +180,11 @@ _cairo_boilerplate_recording_create_surface (const char *name, { cairo_rectangle_t extents; - *closure = NULL; - extents.x = 0; extents.y = 0; extents.width = width; extents.height = height; - return cairo_recording_surface_create (content, &extents); + return *closure = cairo_recording_surface_create (content, &extents); } #endif @@ -353,7 +351,8 @@ static const cairo_boilerplate_target_t builtin_targets[] = { NULL, NULL, _cairo_boilerplate_get_image_surface, cairo_surface_write_to_png, - NULL, NULL, + (cairo_boilerplate_cleanup_t) cairo_surface_finish, + NULL, FALSE, FALSE, TRUE }, { @@ -364,7 +363,8 @@ static const cairo_boilerplate_target_t builtin_targets[] = { NULL, NULL, _cairo_boilerplate_get_image_surface, cairo_surface_write_to_png, - NULL, NULL, + (cairo_boilerplate_cleanup_t) cairo_surface_finish, + NULL, FALSE, FALSE, TRUE }, #endif