Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-08-22 13:10:16 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-08-22 13:10:16 +0400
commita4fd9f827b5792538da664d1a5eaea2db9472b90 (patch)
tree22587a02e2b0547525721976492931cd1d0abf26 /source/blender/blenkernel/intern/scene.c
parentffcc63a7d0ef6e0651412588ec5e8867e7e0e023 (diff)
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.
Diffstat (limited to 'source/blender/blenkernel/intern/scene.c')
-rw-r--r--source/blender/blenkernel/intern/scene.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 4fd08c8f6f8..145bd6a88e5 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -153,8 +153,9 @@ Scene *BKE_scene_copy(Scene *sce, int type)
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 @@ void BKE_scene_free(Scene *sce)
}
if (sce->nodetree) {
- ntreeFreeTree_ex(sce->nodetree, FALSE); /* TODO: do_id_user arg needs checking */
+ ntreeFreeTree(sce->nodetree);
MEM_freeN(sce->nodetree);
}