diff options
author | Federico Mena Quintero <federico@gnome.org> | 2018-08-21 16:24:59 -0500 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2018-08-21 16:26:02 -0500 |
commit | a762912f42b4fb9bab92c5758f8465708a6dbe17 (patch) | |
tree | 3788101a80a98ce02ff0e1f817ba3b4d0e92b774 /librsvg | |
parent | d3a0d357d7456073558f3a0d1e136c1ab52490fe (diff) | |
download | librsvg-a762912f42b4fb9bab92c5758f8465708a6dbe17.tar.gz |
Propagate RenderingError up to the Node.draw() methods
This touches most of the code for the "obvious" places where rendering
errors should be propagated. It does not yet handle all the places
where Cairo errors could occur.
Diffstat (limited to 'librsvg')
-rw-r--r-- | librsvg/rsvg-handle.c | 10 | ||||
-rw-r--r-- | librsvg/rsvg-private.h | 2 |
2 files changed, 7 insertions, 5 deletions
diff --git a/librsvg/rsvg-handle.c b/librsvg/rsvg-handle.c index fc7e9068..880404da 100644 --- a/librsvg/rsvg-handle.c +++ b/librsvg/rsvg-handle.c @@ -1023,6 +1023,7 @@ rsvg_handle_render_cairo_sub (RsvgHandle * handle, cairo_t * cr, const char *id) RsvgDrawingCtx *draw; RsvgNode *drawsub = NULL; cairo_status_t status; + gboolean res; g_return_val_if_fail (handle != NULL, FALSE); @@ -1060,13 +1061,13 @@ rsvg_handle_render_cairo_sub (RsvgHandle * handle, cairo_t * cr, const char *id) cairo_save (cr); rsvg_tree_cascade (handle->priv->tree); - rsvg_drawing_ctx_draw_node_from_stack (draw, handle->priv->tree); + res = rsvg_drawing_ctx_draw_node_from_stack (draw, handle->priv->tree); cairo_restore (cr); rsvg_drawing_ctx_free (draw); - return TRUE; + return res; } /** @@ -1118,6 +1119,7 @@ get_node_ink_rect(RsvgHandle *handle, RsvgNode *node, cairo_rectangle_t *ink_rec cairo_surface_t *target; cairo_t *cr; RsvgDrawingCtx *draw; + gboolean res; g_assert (node != NULL); @@ -1132,14 +1134,14 @@ get_node_ink_rect(RsvgHandle *handle, RsvgNode *node, cairo_rectangle_t *ink_rec rsvg_drawing_ctx_add_node_and_ancestors_to_stack (draw, node); rsvg_tree_cascade (handle->priv->tree); - rsvg_drawing_ctx_draw_node_from_stack (draw, handle->priv->tree); + res = rsvg_drawing_ctx_draw_node_from_stack (draw, handle->priv->tree); rsvg_drawing_ctx_get_ink_rect (draw, ink_rect); rsvg_drawing_ctx_free (draw); cairo_destroy (cr); cairo_surface_destroy (target); - return TRUE; + return res; } /** diff --git a/librsvg/rsvg-private.h b/librsvg/rsvg-private.h index 14cb0e81..b9b110cb 100644 --- a/librsvg/rsvg-private.h +++ b/librsvg/rsvg-private.h @@ -258,7 +258,7 @@ void rsvg_drawing_ctx_add_node_and_ancestors_to_stack (RsvgDrawingCtx *draw_ctx, /* Defined in rsvg_internals/src/drawing_ctx.rs */ G_GNUC_INTERNAL -void rsvg_drawing_ctx_draw_node_from_stack (RsvgDrawingCtx *ctx, RsvgTree *tree); +gboolean rsvg_drawing_ctx_draw_node_from_stack (RsvgDrawingCtx *ctx, RsvgTree *tree) G_GNUC_WARN_UNUSED_RESULT;; /* Defined in rsvg_internals/src/drawing_ctx.rs */ G_GNUC_INTERNAL |