summaryrefslogtreecommitdiff
path: root/rsvg_internals/src/drawing_ctx.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rsvg_internals/src/drawing_ctx.rs')
-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) {