diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-08-22 13:10:16 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-08-22 13:10:16 +0400 |
commit | a4fd9f827b5792538da664d1a5eaea2db9472b90 (patch) | |
tree | 22587a02e2b0547525721976492931cd1d0abf26 /source/blender/blenkernel/intern/scene.c | |
parent | ffcc63a7d0ef6e0651412588ec5e8867e7e0e023 (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.c | 7 |
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); } |