From ae2033aca2047afbfe0bf449bcd01b5b79a124b8 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Sat, 9 Jul 2016 15:43:45 +0200 Subject: Add BKE_key_copy_ex() that takes a Main as parameter. --- source/blender/blenkernel/BKE_key.h | 1 + source/blender/blenkernel/intern/curve.c | 2 +- source/blender/blenkernel/intern/key.c | 10 +++++++--- source/blender/blenkernel/intern/lattice.c | 2 +- source/blender/blenkernel/intern/mesh.c | 2 +- source/blender/editors/mesh/meshtools.c | 2 +- 6 files changed, 12 insertions(+), 7 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/BKE_key.h b/source/blender/blenkernel/BKE_key.h index a278fd54f9b..86484db3809 100644 --- a/source/blender/blenkernel/BKE_key.h +++ b/source/blender/blenkernel/BKE_key.h @@ -52,6 +52,7 @@ void BKE_key_free(struct Key *sc); void BKE_key_free_nolib(struct Key *key); struct Key *BKE_key_add(struct ID *id); struct Key *BKE_key_copy(struct Key *key); +struct Key *BKE_key_copy_ex(struct Main *bmain, struct Key *key); struct Key *BKE_key_copy_nolib(struct Key *key); void BKE_key_make_local(struct Main *bmain, struct Key *key); void BKE_key_sort(struct Key *key); diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index d3c5d28ddbb..4dc0f1ccf8c 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -195,7 +195,7 @@ Curve *BKE_curve_copy_ex(Main *bmain, Curve *cu) cun->bb = MEM_dupallocN(cu->bb); if (cu->key) { - cun->key = BKE_key_copy(cu->key); + cun->key = BKE_key_copy_ex(bmain, cu->key); cun->key->from = (ID *)cun; } diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 45686e9f450..ed8095444a4 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -150,12 +150,12 @@ Key *BKE_key_add(ID *id) /* common function */ return key; } -Key *BKE_key_copy(Key *key) +Key *BKE_key_copy_ex(Main *bmain, Key *key) { Key *keyn; KeyBlock *kbn, *kb; - keyn = BKE_libblock_copy(&key->id); + keyn = BKE_libblock_copy_ex(bmain, &key->id); BLI_duplicatelist(&keyn->block, &key->block); @@ -171,12 +171,16 @@ Key *BKE_key_copy(Key *key) } if (ID_IS_LINKED_DATABLOCK(key)) { - BKE_id_lib_local_paths(G.main, key->id.lib, &keyn->id); + BKE_id_lib_local_paths(bmain, key->id.lib, &keyn->id); } return keyn; } +Key *BKE_key_copy(Key *key) +{ + return BKE_key_copy_ex(G.main, key); +} Key *BKE_key_copy_nolib(Key *key) { diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index 3e03690a1a6..e85fad55532 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -285,7 +285,7 @@ Lattice *BKE_lattice_copy_ex(Main *bmain, Lattice *lt) ltn->def = MEM_dupallocN(lt->def); if (lt->key) { - ltn->key = BKE_key_copy(ltn->key); + ltn->key = BKE_key_copy_ex(bmain, ltn->key); ltn->key->from = (ID *)ltn; } diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index de9be3d835d..b2ab83a7018 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -549,7 +549,7 @@ Mesh *BKE_mesh_copy_ex(Main *bmain, Mesh *me) men->bb = MEM_dupallocN(men->bb); if (me->key) { - men->key = BKE_key_copy(me->key); + men->key = BKE_key_copy_ex(bmain, me->key); men->key->from = (ID *)men; } diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 05145f7bf29..1b5fc4e8a1c 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -172,7 +172,7 @@ int join_mesh_exec(bContext *C, wmOperator *op) */ if (key) { /* make a duplicate copy that will only be used here... (must remember to free it!) */ - nkey = BKE_key_copy(key); + nkey = BKE_key_copy_ex(bmain, key); /* for all keys in old block, clear data-arrays */ for (kb = key->block.first; kb; kb = kb->next) { -- cgit v1.2.3