summaryrefslogtreecommitdiff
path: root/src/cairo-tee-surface.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-09-16 13:47:17 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-09-16 13:48:09 +0100
commit35f41d253ff09a7c144ace833901b28e961c8e14 (patch)
tree42d5ec6fd2271c9e744a0c101de37a957633c4d5 /src/cairo-tee-surface.c
parent983cfb2f54b6636b38744932122d43ef8ad7a12d (diff)
downloadcairo-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.c84
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;
}