diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2014-05-09 16:59:14 +0400 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2014-05-09 17:02:21 +0400 |
commit | 6f71491d61d5d99954b23b5b240f031055da602e (patch) | |
tree | 009524bb91d1c1613d0c978f9ea52dc64c5c6157 /source/blender/blenkernel/intern | |
parent | 31849cafc26ad3e90ba308a14df5bd6ca66a4cbb (diff) |
Fix T40108: Copying materials leaves a shared Action datablock in nested
bNodeTree blocks.
This was broken by rB6e99fb0 (own commit). I expected the `do_action`
argument to be of no importance in this case due to node trees using
material animation, but this is not the case.
Anyway, this patch adds back a do_action to the BKE_libblock_copy_nolib
function as well to restore the previous behavior.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/library.c | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/material.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/node.c | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 6306971a612..fe2d1481581 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -806,7 +806,7 @@ void *BKE_libblock_copy_ex(Main *bmain, ID *id) return idn; } -void *BKE_libblock_copy_nolib(ID *id) +void *BKE_libblock_copy_nolib(ID *id, const bool do_action) { ID *idn; size_t idn_len; @@ -827,7 +827,7 @@ void *BKE_libblock_copy_nolib(ID *id) id->newid = idn; idn->flag |= LIB_NEW; - BKE_libblock_copy_data(idn, id, false); + BKE_libblock_copy_data(idn, id, do_action); return idn; } diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index c8ad920b2c3..de3aea9267f 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -257,7 +257,7 @@ Material *localize_material(Material *ma) Material *man; int a; - man = BKE_libblock_copy_nolib(&ma->id); + man = BKE_libblock_copy_nolib(&ma->id, false); /* no increment for texture ID users, in previewrender.c it prevents decrement */ for (a = 0; a < MAX_MTEX; a++) { diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 3e64868e447..ce1e34de0b0 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1123,7 +1123,7 @@ static bNodeTree *ntreeCopyTree_internal(bNodeTree *ntree, Main *bmain, bool do_ newtree = BKE_libblock_copy(&ntree->id); } else { - newtree = BKE_libblock_copy_nolib(&ntree->id); + newtree = BKE_libblock_copy_nolib(&ntree->id, true); newtree->id.lib = NULL; /* same as owning datablock id.lib */ } |