diff options
author | Federico Mena Quintero <federico@gnome.org> | 2018-06-22 13:49:00 -0500 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2018-06-22 13:49:00 -0500 |
commit | dca2e4f034be83f8ac293fb579cd936681307d2a (patch) | |
tree | 513c3a30696707e8cf3291949ed287d5e9016dbd | |
parent | b4283ff083e0105b5fc8a8bee5290e0d8ec2eb37 (diff) | |
download | librsvg-dca2e4f034be83f8ac293fb579cd936681307d2a.tar.gz |
draw_node_from_stack(): Ahem, make this work in the original way.
What was I thinking?
-rw-r--r-- | rsvg_internals/src/drawing_ctx.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs index f847fb57..f7d8c60e 100644 --- a/rsvg_internals/src/drawing_ctx.rs +++ b/rsvg_internals/src/drawing_ctx.rs @@ -443,15 +443,14 @@ impl<'a> DrawingCtx { node: &RsvgNode, clipping: bool, ) { - let mut draw = false; - if let Some(top) = self.drawsub_stack.pop() { - if rc_node_ptr_eq(&top, node) { - draw = true; - } + let mut draw = true; - self.drawsub_stack.push(top); - } else { - draw = true; + let stack_top = self.drawsub_stack.pop(); + + if let Some(ref top) = stack_top { + if !rc_node_ptr_eq(&top, node) { + draw = false; + } } if draw { @@ -460,6 +459,10 @@ impl<'a> DrawingCtx { node.draw(node, cascaded, self, clipping); } } + + if let Some(top) = stack_top { + self.drawsub_stack.push(top); + } } pub fn add_node_and_ancestors_to_stack(&mut self, node: &RsvgNode) { |