[Bf-blender-cvs] [2881473] master: Fix T39547: Toggling render passes on active scene does not update render layer nodes in a pinned tree from different scene.

Lukas Tönne noreply at git.blender.org
Wed Apr 2 11:09:39 CEST 2014


Commit: 288147334ce81cf0be533c15f3698b88ef7c63f3
Author: Lukas Tönne
Date:   Wed Apr 2 10:59:35 2014 +0200
https://developer.blender.org/rB288147334ce81cf0be533c15f3698b88ef7c63f3

Fix T39547: Toggling render passes on active scene does not update
render layer nodes in a pinned tree from different scene.

The way these updates work is a nasty legacy hack:
https://developer.blender.org/diffusion/B/browse/master/source/blender/nodes/composite/node_composite_tree.c$277

This function is called //very frequently// by the get_from_context
method. However, this does not get called for pinned node trees, so
when showing a different scene's compositing nodes in the editor they
may not get updated correctly.

Now moved this update call out of get_from_context so it happens in any
case. Will be called no more frequently than before (on every redraw).
Eventually the depsgraph should handle this more precisely, it's just a
simple ID dependency anyway ...

===================================================================

M	source/blender/editors/space_node/node_edit.c
M	source/blender/nodes/composite/node_composite_tree.c

===================================================================

diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index ac0834c..7c5ffa5 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -586,6 +586,14 @@ void snode_set_context(const bContext *C)
 	if (snode->nodetree != ntree || snode->id != id || snode->from != from) {
 		ED_node_tree_start(snode, ntree, id, from);
 	}
+	
+	/* XXX Legacy hack to update render layer node outputs.
+	 * This should be handled by the depsgraph eventually ...
+	 */
+	if (ED_node_is_compositor(snode) && snode->nodetree) {
+		/* update output sockets based on available layers */
+		ntreeCompositForceHidden(snode->nodetree);
+	}
 }
 
 void snode_update(SpaceNode *snode, bNode *node)
diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c
index f3a99d9..a1bc369 100644
--- a/source/blender/nodes/composite/node_composite_tree.c
+++ b/source/blender/nodes/composite/node_composite_tree.c
@@ -72,10 +72,6 @@ static void composite_get_from_context(const bContext *C, bNodeTreeType *UNUSED(
 	*r_from = NULL;
 	*r_id = &scene->id;
 	*r_ntree = scene->nodetree;
-	
-	/* update output sockets based on available layers */
-	ntreeCompositForceHidden(scene->nodetree);
-	
 }
 
 static void foreach_nodeclass(Scene *UNUSED(scene), void *calldata, bNodeClassCallback func)




More information about the Bf-blender-cvs mailing list