diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-10-01 11:54:37 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-10-01 11:54:37 +0400 |
commit | 1a19cbb166ce66b427a2dd0d0f9e65b1863e35b0 (patch) | |
tree | ec30f45228f4a89f307ea60fccd0eb35a1b6fd3b /source/blender/blenkernel/intern/mask.c | |
parent | 323ad98496cc4b5b95be69d1a81c2bb07ff5bf56 (diff) |
fix for some errors when unlinking.
- movieclip unlink didn't clear node ID pointers from the scene (leaving dangling pointers).
- mask datablock unlink was clearning references from scene nodes twice.
Diffstat (limited to 'source/blender/blenkernel/intern/mask.c')
-rw-r--r-- | source/blender/blenkernel/intern/mask.c | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c index 3564071334c..cacbf988ba9 100644 --- a/source/blender/blenkernel/intern/mask.c +++ b/source/blender/blenkernel/intern/mask.c @@ -916,19 +916,6 @@ void BKE_mask_free_nolib(Mask *mask) BKE_mask_layer_free_list(&mask->masklayers); } - -static void ntree_unlink_mask_cb(void *calldata, struct ID *UNUSED(owner_id), struct bNodeTree *ntree) -{ - ID *id = (ID *)calldata; - bNode *node; - - for (node = ntree->nodes.first; node; node = node->next) { - if (node->id == id) { - node->id = NULL; - } - } -} - void BKE_mask_free(Main *bmain, Mask *mask) { bScreen *scr; @@ -975,21 +962,11 @@ void BKE_mask_free(Main *bmain, Mask *mask) } SEQ_END } - - - if (scene->nodetree) { - bNode *node; - for (node = scene->nodetree->nodes.first; node; node = node->next) { - if (node->id == &mask->id) { - node->id = NULL; - } - } - } } { bNodeTreeType *treetype = ntreeGetType(NTREE_COMPOSIT); - treetype->foreach_nodetree(bmain, (void *)mask, &ntree_unlink_mask_cb); + treetype->foreach_nodetree(bmain, (void *)mask, &BKE_node_tree_unlink_id_cb); } /* free mask data */ |