summaryrefslogtreecommitdiff
path: root/test/solid-pattern-cache-stress.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2008-12-10 08:50:57 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2008-12-12 11:11:49 +0000
commite6e33b036f9de5087a72cf1de9c0a4ce97c75812 (patch)
tree7fbecda31e02d907c93a8a5eba4bd3f38a1e573d /test/solid-pattern-cache-stress.c
parentbcb2724920aa1bca1a9a82b5017d3180f5f9523e (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.c32
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