Add BKE_key_copy_ex() that takes a Main as parameter.
authorBastien Montagne <montagne29@wanadoo.fr>
Sat, 9 Jul 2016 13:43:45 +0000 (15:43 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Sat, 9 Jul 2016 13:44:12 +0000 (15:44 +0200)
source/blender/blenkernel/BKE_key.h
source/blender/blenkernel/intern/curve.c
source/blender/blenkernel/intern/key.c
source/blender/blenkernel/intern/lattice.c
source/blender/blenkernel/intern/mesh.c
source/blender/editors/mesh/meshtools.c

index a278fd54f9bc59ad9628c5da2983d7604462f786..86484db3809d1578e8895030f539701c49889db6 100644 (file)
@@ -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);
index d3c5d28ddbb0ab0eb8e37ed451050b9aa370d4a2..4dc0f1ccf8c0f35baca25abed4f78aae07d10e3b 100644 (file)
@@ -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;
        }
 
index 45686e9f45034e5cdae13a1d519e4d86853a720e..ed8095444a486cde63f066b6865e08e7c2340ac2 100644 (file)
@@ -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)
 {
index 3e03690a1a655526f49154f1d73308435aa4c55b..e85fad555324de55cf419019e387ada0a4f354f6 100644 (file)
@@ -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;
        }
        
index de9be3d835d4dba998d1626c1756eac7f58e1c3c..b2ab83a70182100b8c7f2e0fa72a2823d93f2f0b 100644 (file)
@@ -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;
        }
 
index 05145f7bf291b9f9c4face7fecb798c2e345edf0..1b5fc4e8a1c9b3326b838af5b2072ceb044bf1c5 100644 (file)
@@ -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) {