summaryrefslogtreecommitdiff
path: root/librsvg
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2018-08-21 16:24:59 -0500
committerFederico Mena Quintero <federico@gnome.org>2018-08-21 16:26:02 -0500
commita762912f42b4fb9bab92c5758f8465708a6dbe17 (patch)
tree3788101a80a98ce02ff0e1f817ba3b4d0e92b774 /librsvg
parentd3a0d357d7456073558f3a0d1e136c1ab52490fe (diff)
downloadlibrsvg-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.c10
-rw-r--r--librsvg/rsvg-private.h2
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