diff --git a/src/cairo-paginated-surface.c b/src/cairo-paginated-surface.c index 6c1ff6ab1..b093bca45 100644 --- a/src/cairo-paginated-surface.c +++ b/src/cairo-paginated-surface.c @@ -155,12 +155,22 @@ static cairo_status_t _cairo_paginated_surface_finish (void *abstract_surface) { cairo_paginated_surface_t *surface = abstract_surface; + cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_surface_destroy (surface->meta); + if (!surface->page_is_blank) + status = _cairo_paginated_surface_show_page (abstract_surface); + + if (status == CAIRO_STATUS_SUCCESS) + cairo_surface_finish (surface->target); + + if (status == CAIRO_STATUS_SUCCESS) + cairo_surface_finish (surface->meta); cairo_surface_destroy (surface->target); - return CAIRO_STATUS_SUCCESS; + cairo_surface_destroy (surface->meta); + + return status; } static cairo_surface_t * @@ -296,9 +306,7 @@ _cairo_paginated_surface_copy_page (void *abstract_surface) * show_page and we implement the copying by simply not destroying * the meta-surface. */ - _cairo_surface_show_page (surface->target); - - return CAIRO_STATUS_SUCCESS; + return _cairo_surface_show_page (surface->target); } static cairo_int_status_t diff --git a/test/cairo-test.c b/test/cairo-test.c index 498eb8e33..16173b667 100755 --- a/test/cairo-test.c +++ b/test/cairo-test.c @@ -287,8 +287,6 @@ cairo_test_for_target (cairo_test_t *test, goto UNWIND_CAIRO; } - cairo_show_page (cr); - if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) { cairo_test_log ("Error: Function under test left cairo status in an error state: %s\n", cairo_status_to_string (cairo_status (cr)));