Revision: 50106
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50106
Author:   campbellbarton
Date:     2012-08-22 09:10:16 +0000 (Wed, 22 Aug 2012)
Log Message:
-----------
fix for bug where scene copy and free didn't manage ID users.

you could for eg, make a full copy of a scene, then manually remove its compo 
nodes - which would give invalid zero user count.

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

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c       2012-08-22 
08:54:18 UTC (rev 50105)
+++ trunk/blender/source/blender/blenkernel/intern/node.c       2012-08-22 
09:10:16 UTC (rev 50106)
@@ -704,7 +704,7 @@
 
                /* ntreeUserDecrefID inline */
                if (do_id_user) {
-                       id_us_min(node->id);
+                       id_us_plus(node->id);
                }
 
                if (do_make_extern) {

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c      2012-08-22 
08:54:18 UTC (rev 50105)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c      2012-08-22 
09:10:16 UTC (rev 50106)
@@ -153,8 +153,9 @@
                BKE_keyingsets_copy(&(scen->keyingsets), &(sce->keyingsets));
 
                if (sce->nodetree) {
-                       scen->nodetree = ntreeCopyTree_ex(sce->nodetree, 
FALSE); /* TODO: do_id_user arg needs checking */ /* copies actions */
-                       ntreeSwitchID_ex(scen->nodetree, &sce->id, &scen->id, 
FALSE);
+                       /* ID's are managed on both copy and switch */
+                       scen->nodetree = ntreeCopyTree(sce->nodetree);
+                       ntreeSwitchID(scen->nodetree, &sce->id, &scen->id);
                }
 
                obase = sce->base.first;
@@ -321,7 +322,7 @@
        }
        
        if (sce->nodetree) {
-               ntreeFreeTree_ex(sce->nodetree, FALSE); /* TODO: do_id_user arg 
needs checking */
+               ntreeFreeTree(sce->nodetree);
                MEM_freeN(sce->nodetree);
        }
 

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to