summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2018-06-22 13:49:00 -0500
committerFederico Mena Quintero <federico@gnome.org>2018-06-22 13:49:00 -0500
commitdca2e4f034be83f8ac293fb579cd936681307d2a (patch)
tree513c3a30696707e8cf3291949ed287d5e9016dbd
parentb4283ff083e0105b5fc8a8bee5290e0d8ec2eb37 (diff)
downloadlibrsvg-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.rs19
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) {