[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36428] trunk/blender/source/blender/ blenkernel/intern/node.c: copying/ freeing node trees now adjusts grease pencil user count.

Campbell Barton ideasman42 at gmail.com
Mon May 2 10:37:44 CEST 2011


Revision: 36428
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36428
Author:   campbellbarton
Date:     2011-05-02 08:37:44 +0000 (Mon, 02 May 2011)
Log Message:
-----------
copying/freeing node trees now adjusts grease pencil user count.
also NULL freed texture node socket data incase its used again by accident.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/node.c

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c	2011-05-02 08:36:00 UTC (rev 36427)
+++ trunk/blender/source/blender/blenkernel/intern/node.c	2011-05-02 08:37:44 UTC (rev 36428)
@@ -1193,7 +1193,9 @@
 		newtree= MEM_dupallocN(ntree);
 		copy_libblock_data(&newtree->id, &ntree->id, TRUE); /* copy animdata and ID props */
 	}
-	
+
+	id_us_plus((ID *)newtree->gpd);
+
 	/* in case a running nodetree is copied */
 	newtree->init &= ~(NTREE_EXEC_INIT);
 	newtree->threadstack= NULL;
@@ -1435,6 +1437,8 @@
 	
 	BKE_free_animdata((ID *)ntree);
 
+	id_us_min((ID *)ntree->gpd);
+
 	BLI_freelistN(&ntree->links);	/* do first, then unlink_node goes fast */
 	
 	for(node= ntree->nodes.first; node; node= next) {
@@ -2324,13 +2328,18 @@
 	bNodeStack *ns;
 	int th, a;
 	
-	if(ntree->threadstack)
-		for(th=0; th<BLENDER_MAX_THREADS; th++)
-			for(nts=ntree->threadstack[th].first; nts; nts=nts->next)
-				for(ns= nts->stack, a=0; a<ntree->stacksize; a++, ns++)
-					if(ns->data)
+	if(ntree->threadstack) {
+		for(th=0; th<BLENDER_MAX_THREADS; th++) {
+			for(nts=ntree->threadstack[th].first; nts; nts=nts->next) {
+				for(ns= nts->stack, a=0; a<ntree->stacksize; a++, ns++) {
+					if(ns->data) {
 						MEM_freeN(ns->data);
-						
+						ns->data= NULL;
+					}
+				}
+			}
+		}
+	}
 }
 
 void ntreeBeginExecTree(bNodeTree *ntree)




More information about the Bf-blender-cvs mailing list