diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2008-12-10 08:50:57 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2008-12-12 11:11:49 +0000 |
commit | e6e33b036f9de5087a72cf1de9c0a4ce97c75812 (patch) | |
tree | 7fbecda31e02d907c93a8a5eba4bd3f38a1e573d /test/solid-pattern-cache-stress.c | |
parent | bcb2724920aa1bca1a9a82b5017d3180f5f9523e (diff) |
[test/solid-pattern-cache-stress] Propagate status from sub-contexts.
Use a cairo_append_path() to set an arbitrary error status on the parent
context, in order to propagate errors from a child.
Diffstat (limited to 'test/solid-pattern-cache-stress.c')
-rw-r--r-- | test/solid-pattern-cache-stress.c | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/test/solid-pattern-cache-stress.c b/test/solid-pattern-cache-stress.c index b6954729e..ec183fde7 100644 --- a/test/solid-pattern-cache-stress.c +++ b/test/solid-pattern-cache-stress.c @@ -64,6 +64,19 @@ _cairo_create_image (cairo_t *cr, cairo_format_t format, int width, int height) } static void +_propagate_status (cairo_t *dst, cairo_t *src) +{ + cairo_path_t path; + + path.status = cairo_status (src); + if (path.status) { + path.num_data = 0; + path.data = NULL; + cairo_append_path (dst, &path); + } +} + +static void _draw (cairo_t *cr, double red, double green, @@ -85,7 +98,6 @@ _draw (cairo_t *cr, -extents.x_bearing - .5 * extents.width, -extents.y_bearing - .5 * extents.height); cairo_show_text (cr, "cairo"); - } static void @@ -94,11 +106,14 @@ use_similar (cairo_t *cr, double green, double blue) { - cr = _cairo_create_similar (cr, 1, 1); + cairo_t *cr2; - _draw (cr, red, green, blue); + cr2 = _cairo_create_similar (cr, 1, 1); + + _draw (cr2, red, green, blue); - cairo_destroy (cr); + _propagate_status (cr, cr2); + cairo_destroy (cr2); } static void @@ -108,11 +123,14 @@ use_image (cairo_t *cr, double green, double blue) { - cr = _cairo_create_image (cr, format, 1, 1); + cairo_t *cr2; - _draw (cr, red, green, blue); + cr2 = _cairo_create_image (cr, format, 1, 1); + + _draw (cr2, red, green, blue); - cairo_destroy (cr); + _propagate_status (cr, cr2); + cairo_destroy (cr2); } static void |