[Bf-blender-cvs] [964252c] master: Fix T37741: Duplicating node editor did not copy node tree pointers.

Lukas Tönne noreply at git.blender.org
Mon Dec 9 12:00:34 CET 2013


Commit: 964252cdda6feedab58d42fc3fe92a42cd47501d
Author: Lukas Tönne
Date:   Mon Dec 9 11:54:00 2013 +0100
http://developer.blender.org/rB964252cdda6feedab58d42fc3fe92a42cd47501d

Fix T37741: Duplicating node editor did not copy node tree pointers.

The effect of this is not visible with standard compositor/shader nodes,
because the editor node tree is immediately set from context afterward
using the scene or active material. But with pynodes the context update
is not necessarily defined and the node tree pointer gets lost.

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

M	source/blender/editors/space_node/space_node.c

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

diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 6ae8a1f..2fe63c4 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -555,11 +555,15 @@ static SpaceLink *node_duplicate(SpaceLink *sl)
 	SpaceNode *snode = (SpaceNode *)sl;
 	SpaceNode *snoden = MEM_dupallocN(snode);
 
+	BLI_duplicatelist(&snoden->treepath, &snode->treepath);
+
 	/* clear or remove stuff from old */
-	snoden->nodetree = NULL;
 	snoden->linkdrag.first = snoden->linkdrag.last = NULL;
-	
-	BLI_duplicatelist(&snoden->treepath, &snode->treepath);
+
+	/* Note: no need to set node tree user counts,
+	 * the editor only keeps at least 1 (id_us_ensure_real),
+	 * which is already done by the original SpaceNode.
+	 */
 
 	return (SpaceLink *)snoden;
 }




More information about the Bf-blender-cvs mailing list