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 | |
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')
-rw-r--r-- | source/blender/blenkernel/BKE_library.h | 2 | ||||
-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 |
4 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h index 44a9885cd87..55c71ff49cf 100644 --- a/source/blender/blenkernel/BKE_library.h +++ b/source/blender/blenkernel/BKE_library.h @@ -49,7 +49,7 @@ struct PropertyRNA; void *BKE_libblock_alloc(struct Main *bmain, short type, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); void *BKE_libblock_copy_ex(struct Main *bmain, struct ID *id) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); -void *BKE_libblock_copy_nolib(struct ID *id) ATTR_NONNULL(); +void *BKE_libblock_copy_nolib(struct ID *id, const bool do_action) ATTR_NONNULL(); void *BKE_libblock_copy(struct ID *id) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); void BKE_libblock_copy_data(struct ID *id, const struct ID *id_from, const bool do_action); 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 */ } |