From 54fd8176d7e914da9fc834b465c22bffb6f3a620 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Thu, 22 Aug 2019 16:54:51 +0300 Subject: NodeTree: also assign the owner pointer when copying. --- source/blender/blenkernel/intern/node.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'source/blender/blenkernel/intern/node.c') diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 59ffbbfea6f..973b30a640b 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1132,7 +1132,7 @@ bNodeTree *ntreeCopyTree_ex_new_pointers(const bNodeTree *ntree, Main *bmain, const bool do_id_user) { - bNodeTree *new_ntree = ntreeCopyTree_ex(ntree, bmain, do_id_user); + bNodeTree *new_ntree = ntreeCopyTree_ex(ntree, bmain, NULL, do_id_user); bNode *new_node = new_ntree->nodes.first; bNode *node_src = ntree->nodes.first; while (new_node != NULL) { @@ -1529,16 +1529,22 @@ void BKE_node_tree_copy_data(Main *UNUSED(bmain), ntree_dst->interface_type = NULL; } -bNodeTree *ntreeCopyTree_ex(const bNodeTree *ntree, Main *bmain, const bool do_id_user) +void BKE_nodetree_copy_owned_ex(Main *bmain, bNodeTree *src, bNodeTree **dst, ID *owner, int flag) { - bNodeTree *ntree_copy; + if (BKE_id_copy_ex(bmain, (ID *)src, (ID **)dst, flag)) { + (*dst)->owner = owner; + } +} +bNodeTree *ntreeCopyTree_ex(const bNodeTree *ntree, Main *bmain, ID *owner, const bool do_id_user) +{ + bNodeTree *ntree_copy = NULL; const int flag = do_id_user ? LIB_ID_CREATE_NO_USER_REFCOUNT | LIB_ID_CREATE_NO_MAIN : 0; - BKE_id_copy_ex(bmain, (ID *)ntree, (ID **)&ntree_copy, flag); + BKE_nodetree_copy_owned_ex(bmain, ntree, &ntree_copy, owner, flag); return ntree_copy; } -bNodeTree *ntreeCopyTree(Main *bmain, const bNodeTree *ntree) +bNodeTree *ntreeCopyTree(Main *bmain, const bNodeTree *ntree, ID *owner) { - return ntreeCopyTree_ex(ntree, bmain, true); + return ntreeCopyTree_ex(ntree, bmain, owner, true); } void ntreeUserIncrefID(bNodeTree *ntree) -- cgit v1.2.3