From bcb61fec0977d619b37e9b7c6c0dc1176a3ac894 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 6 Apr 2021 16:38:51 +0200 Subject: [PATCH] pgraphnodes: Fix draw callback called twice in certain cases This would happen if you call upcall() in a CallbackNode's cull callback. --- panda/src/pgraphnodes/nodeCullCallbackData.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/panda/src/pgraphnodes/nodeCullCallbackData.cxx b/panda/src/pgraphnodes/nodeCullCallbackData.cxx index 5a9dbc9e0a..c1f0ac7464 100644 --- a/panda/src/pgraphnodes/nodeCullCallbackData.cxx +++ b/panda/src/pgraphnodes/nodeCullCallbackData.cxx @@ -56,6 +56,13 @@ upcall() { } } - // Now traverse below. - _trav->traverse_below(_data); + // Now visit all the node's children. + PandaNodePipelineReader *node_reader = _data.node_reader(); + PandaNode::Children children = node_reader->get_children(); + node_reader->release(); + int num_children = children.get_num_children(); + for (int i = 0; i < num_children; ++i) { + CullTraverserData next_data(_data, children.get_child(i)); + _trav->traverse(next_data); + } }