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:
authorAlexander Gavrilov <angavrilov@gmail.com>2019-08-22 16:54:51 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2019-08-22 16:55:02 +0300
commit54fd8176d7e914da9fc834b465c22bffb6f3a620 (patch)
tree7c79f39ad5f5dd0ecc344bcacbdd947120f92756 /source/blender/blenkernel/intern/node.c
parent33a287e5c0508af0fcacca2026a1e89cbbc0d385 (diff)
NodeTree: also assign the owner pointer when copying.
Diffstat (limited to 'source/blender/blenkernel/intern/node.c')
-rw-r--r--source/blender/blenkernel/intern/node.c18
1 files changed, 12 insertions, 6 deletions
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)