diff options
-rw-r--r-- | source/blender/blenkernel/intern/node.c | 5 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_node_types.h | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 6e2780b48f4..cc4263f4392 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1672,8 +1672,8 @@ static void free_localized_node_groups(bNodeTree *ntree) for (node = ntree->nodes.first; node; node = node->next) { if (node->type == NODE_GROUP && node->id) { bNodeTree *ngroup = (bNodeTree *)node->id; - if (BLI_findindex(&G.main->nodetree, ngroup) == -1) { - /* ntree is not in library, i.e. localized node group: free it */ + if (ngroup->flag & NTREE_IS_LOCALIZED) { + /* ntree is a localized copy: free it */ ntreeFreeTree_ex(ngroup, false); MEM_freeN(ngroup); } @@ -1960,6 +1960,7 @@ bNodeTree *ntreeLocalize(bNodeTree *ntree) * Note: previews are not copied here. */ ltree = ntreeCopyTree_internal(ntree, NULL, FALSE, FALSE, FALSE); + ltree->flag |= NTREE_IS_LOCALIZED; for (node = ltree->nodes.first; node; node = node->next) { if (node->type == NODE_GROUP && node->id) { diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index 75b9540f736..451dd20daa6 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -402,6 +402,7 @@ typedef struct bNodeTree { #define NTREE_TWO_PASS 4 /* two pass */ #define NTREE_COM_GROUPNODE_BUFFER 8 /* use groupnode buffers */ #define NTREE_VIEWER_BORDER 16 /* use a border for viewer nodes */ +#define NTREE_IS_LOCALIZED 32 /* tree is localized copy, free when deleting node groups */ /* XXX not nice, but needed as a temporary flags * for group updates after library linking. |