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

Once again, no behavioral change expected here.
This commit is contained in:
Bastien Montagne 2020-10-08 16:24:38 +02:00
parent d7f482f88e
commit 5f364216ac
3 changed files with 8 additions and 32 deletions

View File

@ -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);

View File

@ -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.

View File

@ -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 */