summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2020-06-19 17:42:54 -0500
committerFederico Mena Quintero <federico@gnome.org>2020-10-02 11:54:01 -0500
commit0acb7ca90d9730b20164a2529df92f6996e734d2 (patch)
tree4737426f9cbcc8912e6f2c3522d484120be8f06c
parentd2cd58018703d2c3ebb1351f3d9fe3785e9f2a46 (diff)
downloadlibrsvg-0acb7ca90d9730b20164a2529df92f6996e734d2.tar.gz
Create the drawsub_stack in draw_tree(), not in DrawingCtx::new
-rw-r--r--rsvg_internals/src/drawing_ctx.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index 71da8650..f42b57bc 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -160,7 +160,6 @@ pub fn draw_tree(
cascaded: &CascadedValues<'_>,
) -> Result<BoundingBox, RenderingError> {
let mut draw_ctx = DrawingCtx::new(
- limit_to_stack,
cr,
viewport,
dpi,
@@ -168,12 +167,17 @@ pub fn draw_tree(
testing,
);
+ if let Some(limit_to_stack) = limit_to_stack {
+ for n in limit_to_stack.ancestors() {
+ draw_ctx.drawsub_stack.push(n.clone());
+ }
+ }
+
draw_ctx.draw_node_from_stack(node, acquired_nodes, cascaded, false)
}
impl DrawingCtx {
fn new(
- limit_to_stack: Option<&Node>,
cr: &cairo::Context,
viewport: Rect,
dpi: Dpi,
@@ -209,7 +213,7 @@ impl DrawingCtx {
let mut view_box_stack = Vec::new();
view_box_stack.push(vbox);
- let mut draw_ctx = DrawingCtx {
+ DrawingCtx {
initial_transform,
rect,
dpi,
@@ -219,15 +223,7 @@ impl DrawingCtx {
drawsub_stack: Vec::new(),
measuring,
testing,
- };
-
- if let Some(limit_to_stack) = limit_to_stack {
- for n in limit_to_stack.ancestors() {
- draw_ctx.drawsub_stack.push(n.clone());
- }
}
-
- draw_ctx
}
pub fn toplevel_viewport(&self) -> Rect {