From d4cc619a9fdc323c2eb5f967627b0474409e16d5 Mon Sep 17 00:00:00 2001 From: Albert Brand Date: Tue, 22 Nov 2016 11:58:29 +0100 Subject: [PATCH 1/3] Mark all descendants of Defs as seen after a draw When adding clipping paths in a def and changing properties of that clipping path (or its descendants), redraw is triggered only once as updates are never marked as seen. This change makes sure to call `markUpdateSeen` on all descendants of the Defs node on a `draw`. --- .../src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java b/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java index b2a104c7..d660e1fe 100644 --- a/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java +++ b/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java @@ -25,5 +25,12 @@ public class RNSVGDefsShadowNode extends RNSVGDefinitionShadowNode { return true; } }); + traverseChildren(new NodeRunnable() { + public boolean run(RNSVGVirtualNode node) { + node.markUpdateSeen(); + node.traverseChildren(this); + return true; + } + }); } } From a4718c04b6655831607777675d9c62a47cbe9224 Mon Sep 17 00:00:00 2001 From: Albert Brand Date: Wed, 23 Nov 2016 08:25:08 +0100 Subject: [PATCH 2/3] Update RNSVGDefsShadowNode.java Make it more clear that we're traversing with the same `NodeRunnable` --- android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java b/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java index d660e1fe..78c6cc59 100644 --- a/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java +++ b/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java @@ -28,7 +28,7 @@ public class RNSVGDefsShadowNode extends RNSVGDefinitionShadowNode { traverseChildren(new NodeRunnable() { public boolean run(RNSVGVirtualNode node) { node.markUpdateSeen(); - node.traverseChildren(this); + node.traverseChildren(NodeRunnable.this); return true; } }); From 65548a3076950d815dddb7dd991a0163013443c4 Mon Sep 17 00:00:00 2001 From: Albert Brand Date: Thu, 24 Nov 2016 12:26:34 +0100 Subject: [PATCH 3/3] Give recursive NodeRunnable a clear name --- .../src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java b/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java index 78c6cc59..5c5de04b 100644 --- a/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java +++ b/android/src/main/java/com/horcrux/svg/RNSVGDefsShadowNode.java @@ -25,12 +25,13 @@ public class RNSVGDefsShadowNode extends RNSVGDefinitionShadowNode { return true; } }); - traverseChildren(new NodeRunnable() { + NodeRunnable markUpdateSeenRecursive = new NodeRunnable() { public boolean run(RNSVGVirtualNode node) { node.markUpdateSeen(); - node.traverseChildren(NodeRunnable.this); + node.traverseChildren(this); return true; } - }); + }; + traverseChildren(markUpdateSeenRecursive); } }