From 90803eca0fa8d49c54c465580707009aae382d28 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 4 Apr 2007 11:17:23 +0100 Subject: [PATCH] Implement clone_surface for test-fallback-surface. A few tests were failing due to clip_init_deep_copy() not being able to clone the target surface. Before propagating the failure, this was being silently ignored. Copy the simple implementation from cairo-image-surface. --- src/test-fallback-surface.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/test-fallback-surface.c b/src/test-fallback-surface.c index 628373c6d..0b06dc1fe 100644 --- a/src/test-fallback-surface.c +++ b/src/test-fallback-surface.c @@ -169,6 +169,26 @@ _test_fallback_surface_release_dest_image (void *abstract_surface, image_extra); } +static cairo_status_t +_test_fallback_surface_clone_similar (void *abstract_surface, + cairo_surface_t *src, + int src_x, + int src_y, + int width, + int height, + cairo_surface_t **clone_out) +{ + test_fallback_surface_t *surface = abstract_surface; + + if (src->backend == surface->base.backend) { + *clone_out = cairo_surface_reference (src); + + return CAIRO_STATUS_SUCCESS; + } + + return CAIRO_INT_STATUS_UNSUPPORTED; +} + static cairo_int_status_t _test_fallback_surface_get_extents (void *abstract_surface, cairo_rectangle_int16_t *rectangle) @@ -186,7 +206,7 @@ const cairo_surface_backend_t test_fallback_surface_backend = { _test_fallback_surface_release_source_image, _test_fallback_surface_acquire_dest_image, _test_fallback_surface_release_dest_image, - NULL, /* clone_similar */ + _test_fallback_surface_clone_similar, NULL, /* composite */ NULL, /* fill_rectangles */ NULL, /* composite_trapezoids */