[Bf-blender-cvs] [5f364216acd] master: Cleanup/Refactor: Shapekey: Get rid of `BKE_key_copy_nolib()`

Bastien Montagne noreply at git.blender.org
Thu Oct 8 16:35:38 CEST 2020


Commit: 5f364216acd5bf0f8098b1da1cdb2e75d42d59b3
Author: Bastien Montagne
Date:   Thu Oct 8 16:24:38 2020 +0200
Branches: master
https://developer.blender.org/rB5f364216acd5bf0f8098b1da1cdb2e75d42d59b3

Cleanup/Refactor: Shapekey: Get rid of `BKE_key_copy_nolib()`

Once again, no behavioral change expected here.

===================================================================

M	source/blender/blenkernel/BKE_key.h
M	source/blender/blenkernel/intern/key.c
M	source/blender/editors/mesh/editmesh_undo.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_key.h b/source/blender/blenkernel/BKE_key.h
index e3d69166b62..c969ce07d74 100644
--- a/source/blender/blenkernel/BKE_key.h
+++ b/source/blender/blenkernel/BKE_key.h
@@ -39,7 +39,6 @@ extern "C" {
 void BKE_key_free(struct Key *key);
 void BKE_key_free_nolib(struct Key *key);
 struct Key *BKE_key_add(struct Main *bmain, struct ID *id);
-struct Key *BKE_key_copy_nolib(struct Key *key);
 void BKE_key_sort(struct Key *key);
 
 void key_curve_position_weights(float t, float data[4], int type);
diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c
index 5496da2d6f4..8d0413f64c5 100644
--- a/source/blender/blenkernel/intern/key.c
+++ b/source/blender/blenkernel/intern/key.c
@@ -296,36 +296,6 @@ Key *BKE_key_add(Main *bmain, ID *id) /* common function */
   return key;
 }
 
-/* XXX TODO get rid of this! */
-Key *BKE_key_copy_nolib(Key *key)
-{
-  Key *keyn;
-  KeyBlock *kbn, *kb;
-
-  keyn = MEM_dupallocN(key);
-
-  keyn->adt = NULL;
-
-  BLI_duplicatelist(&keyn->block, &key->block);
-
-  kb = key->block.first;
-  kbn = keyn->block.first;
-  while (kbn) {
-
-    if (kbn->data) {
-      kbn->data = MEM_dupallocN(kbn->data);
-    }
-    if (kb == key->refkey) {
-      keyn->refkey = kbn;
-    }
-
-    kbn = kbn->next;
-    kb = kb->next;
-  }
-
-  return keyn;
-}
-
 /* Sort shape keys and Ipo curves after a change.  This assumes that at most
  * one key was moved, which is a valid assumption for the places it's
  * currently being called.
diff --git a/source/blender/editors/mesh/editmesh_undo.c b/source/blender/editors/mesh/editmesh_undo.c
index 9f625fd0515..41d840c4a2d 100644
--- a/source/blender/editors/mesh/editmesh_undo.c
+++ b/source/blender/editors/mesh/editmesh_undo.c
@@ -35,6 +35,7 @@
 #include "BKE_editmesh.h"
 #include "BKE_key.h"
 #include "BKE_layer.h"
+#include "BKE_lib_id.h"
 #include "BKE_main.h"
 #include "BKE_mesh.h"
 #include "BKE_undo_system.h"
@@ -508,7 +509,13 @@ static void *undomesh_from_editmesh(UndoMesh *um, BMEditMesh *em, Key *key)
   }
 #endif
   /* make sure shape keys work */
-  um->me.key = key ? BKE_key_copy_nolib(key) : NULL;
+  if (key != NULL) {
+    um->me.key = (Key *)BKE_id_copy_ex(
+        NULL, &key->id, NULL, LIB_ID_COPY_LOCALIZE | LIB_ID_COPY_NO_ANIMDATA);
+  }
+  else {
+    um->me.key = NULL;
+  }
 
   /* BM_mesh_validate(em->bm); */ /* for troubleshooting */



More information about the Bf-blender-cvs mailing list