diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-09-16 13:47:17 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-09-16 13:48:09 +0100 |
commit | 35f41d253ff09a7c144ace833901b28e961c8e14 (patch) | |
tree | 42d5ec6fd2271c9e744a0c101de37a957633c4d5 /src/cairo-tee-surface.c | |
parent | 983cfb2f54b6636b38744932122d43ef8ad7a12d (diff) | |
download | cairo-35f41d253ff09a7c144ace833901b28e961c8e14.tar.gz |
fdr,tee: Reorder master/slave invocation to capture death-upon-signals
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-tee-surface.c')
-rw-r--r-- | src/cairo-tee-surface.c | 84 |
1 files changed, 32 insertions, 52 deletions
diff --git a/src/cairo-tee-surface.c b/src/cairo-tee-surface.c index 25b420842..4930a0bb7 100644 --- a/src/cairo-tee-surface.c +++ b/src/cairo-tee-surface.c @@ -209,10 +209,6 @@ _cairo_tee_surface_paint (void *abstract_surface, int n, num_slaves; cairo_int_status_t status; - status = _cairo_surface_wrapper_paint (&surface->master, op, source, clip); - if (unlikely (status)) - return status; - num_slaves = _cairo_array_num_elements (&surface->slaves); slaves = _cairo_array_index (&surface->slaves, 0); for (n = 0; n < num_slaves; n++) { @@ -221,7 +217,7 @@ _cairo_tee_surface_paint (void *abstract_surface, return status; } - return CAIRO_STATUS_SUCCESS; + return _cairo_surface_wrapper_paint (&surface->master, op, source, clip); } static cairo_int_status_t @@ -236,11 +232,6 @@ _cairo_tee_surface_mask (void *abstract_surface, cairo_int_status_t status; int n, num_slaves; - status = _cairo_surface_wrapper_mask (&surface->master, - op, source, mask, clip); - if (unlikely (status)) - return status; - num_slaves = _cairo_array_num_elements (&surface->slaves); slaves = _cairo_array_index (&surface->slaves, 0); for (n = 0; n < num_slaves; n++) { @@ -250,7 +241,8 @@ _cairo_tee_surface_mask (void *abstract_surface, return status; } - return CAIRO_STATUS_SUCCESS; + return _cairo_surface_wrapper_mask (&surface->master, + op, source, mask, clip); } static cairo_int_status_t @@ -270,15 +262,6 @@ _cairo_tee_surface_stroke (void *abstract_surface, cairo_int_status_t status; int n, num_slaves; - status = _cairo_surface_wrapper_stroke (&surface->master, - op, source, - path, style, - ctm, ctm_inverse, - tolerance, antialias, - clip); - if (unlikely (status)) - return status; - num_slaves = _cairo_array_num_elements (&surface->slaves); slaves = _cairo_array_index (&surface->slaves, 0); for (n = 0; n < num_slaves; n++) { @@ -292,7 +275,12 @@ _cairo_tee_surface_stroke (void *abstract_surface, return status; } - return CAIRO_STATUS_SUCCESS; + return _cairo_surface_wrapper_stroke (&surface->master, + op, source, + path, style, + ctm, ctm_inverse, + tolerance, antialias, + clip); } static cairo_int_status_t @@ -310,14 +298,6 @@ _cairo_tee_surface_fill (void *abstract_surface, cairo_int_status_t status; int n, num_slaves; - status = _cairo_surface_wrapper_fill (&surface->master, - op, source, - path, fill_rule, - tolerance, antialias, - clip); - if (unlikely (status)) - return status; - num_slaves = _cairo_array_num_elements (&surface->slaves); slaves = _cairo_array_index (&surface->slaves, 0); for (n = 0; n < num_slaves; n++) { @@ -330,7 +310,11 @@ _cairo_tee_surface_fill (void *abstract_surface, return status; } - return CAIRO_INT_STATUS_SUCCESS; + return _cairo_surface_wrapper_fill (&surface->master, + op, source, + path, fill_rule, + tolerance, antialias, + clip); } static cairo_bool_t @@ -364,18 +348,6 @@ _cairo_tee_surface_show_text_glyphs (void *abstract_surface, if (unlikely (glyphs_copy == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - memcpy (glyphs_copy, glyphs, sizeof (cairo_glyph_t) * num_glyphs); - status = _cairo_surface_wrapper_show_text_glyphs (&surface->master, op, - source, - utf8, utf8_len, - glyphs_copy, num_glyphs, - clusters, num_clusters, - cluster_flags, - scaled_font, - clip); - if (unlikely (status)) - goto CLEANUP; - num_slaves = _cairo_array_num_elements (&surface->slaves); slaves = _cairo_array_index (&surface->slaves, 0); for (n = 0; n < num_slaves; n++) { @@ -392,7 +364,16 @@ _cairo_tee_surface_show_text_glyphs (void *abstract_surface, goto CLEANUP; } - CLEANUP: + memcpy (glyphs_copy, glyphs, sizeof (cairo_glyph_t) * num_glyphs); + status = _cairo_surface_wrapper_show_text_glyphs (&surface->master, op, + source, + utf8, utf8_len, + glyphs_copy, num_glyphs, + clusters, num_clusters, + cluster_flags, + scaled_font, + clip); +CLEANUP: free (glyphs_copy); return status; } @@ -499,27 +480,26 @@ cairo_tee_surface_remove (cairo_surface_t *abstract_surface, { cairo_tee_surface_t *surface; cairo_surface_wrapper_t *slaves; - cairo_int_status_t status; int n, num_slaves; if (unlikely (abstract_surface->status)) return; if (unlikely (abstract_surface->finished)) { - status = _cairo_surface_set_error (abstract_surface, - _cairo_error (CAIRO_STATUS_SURFACE_FINISHED)); + _cairo_surface_set_error (abstract_surface, + _cairo_error (CAIRO_STATUS_SURFACE_FINISHED)); return; } if (abstract_surface->backend != &cairo_tee_surface_backend) { - status = _cairo_surface_set_error (abstract_surface, - _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); + _cairo_surface_set_error (abstract_surface, + _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); return; } surface = (cairo_tee_surface_t *) abstract_surface; if (target == surface->master.target) { - status = _cairo_surface_set_error (abstract_surface, - _cairo_error (CAIRO_STATUS_INVALID_INDEX)); + _cairo_surface_set_error (abstract_surface, + _cairo_error (CAIRO_STATUS_INVALID_INDEX)); return; } @@ -531,8 +511,8 @@ cairo_tee_surface_remove (cairo_surface_t *abstract_surface, } if (n == num_slaves) { - status = _cairo_surface_set_error (abstract_surface, - _cairo_error (CAIRO_STATUS_INVALID_INDEX)); + _cairo_surface_set_error (abstract_surface, + _cairo_error (CAIRO_STATUS_INVALID_INDEX)); return; } |