Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorBastien Montagne <b.mont29@gmail.com>2020-03-09 20:40:06 +0300
committerBastien Montagne <b.mont29@gmail.com>2020-03-09 20:43:11 +0300
commitbe2e41c397ba4d13b13e817bee46628ce984bd6b (patch)
tree3b9f34cf8f7d0b7635d74d81e7de541e55515717 /source
parent6472a721f0f6df6e813f4cb78217d70f8aed588e (diff)
Cleanup: Move `BKE_animdata_free()` call out of each IDType free data.
This has been long standing TODO... Note that remaining usages of BKE_xxx_delete should all be carefully checked for and utilmately nuked in favor of `BKE_id_delete()`, think we still have quiet a few bugs hidden in those (code seems to usually assume those functions do a full ID deletion, which is not the case).
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/armature.c1
-rw-r--r--source/blender/blenkernel/intern/cachefile.c1
-rw-r--r--source/blender/blenkernel/intern/camera.c2
-rw-r--r--source/blender/blenkernel/intern/curve.c2
-rw-r--r--source/blender/blenkernel/intern/gpencil.c3
-rw-r--r--source/blender/blenkernel/intern/key.c2
-rw-r--r--source/blender/blenkernel/intern/lattice.c2
-rw-r--r--source/blender/blenkernel/intern/lib_id_delete.c4
-rw-r--r--source/blender/blenkernel/intern/light.c1
-rw-r--r--source/blender/blenkernel/intern/lightprobe.c7
-rw-r--r--source/blender/blenkernel/intern/linestyle.c2
-rw-r--r--source/blender/blenkernel/intern/mask.c2
-rw-r--r--source/blender/blenkernel/intern/material.c2
-rw-r--r--source/blender/blenkernel/intern/mball.c2
-rw-r--r--source/blender/blenkernel/intern/mesh.c17
-rw-r--r--source/blender/blenkernel/intern/movieclip.c1
-rw-r--r--source/blender/blenkernel/intern/node.c3
-rw-r--r--source/blender/blenkernel/intern/object.c1
-rw-r--r--source/blender/blenkernel/intern/particle.c2
-rw-r--r--source/blender/blenkernel/intern/scene.c2
-rw-r--r--source/blender/blenkernel/intern/speaker.c7
-rw-r--r--source/blender/blenkernel/intern/texture.c1
-rw-r--r--source/blender/blenkernel/intern/world.c1
23 files changed, 17 insertions, 51 deletions
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 6f0b5fb7421..0580ad55e43 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -138,7 +138,6 @@ static void armature_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src
static void armature_free_data(struct ID *id)
{
bArmature *armature = (bArmature *)id;
- BKE_animdata_free(&armature->id, false);
BKE_armature_bone_hash_free(armature);
BKE_armature_bonelist_free(&armature->bonebase);
diff --git a/source/blender/blenkernel/intern/cachefile.c b/source/blender/blenkernel/intern/cachefile.c
index b92a9b0c453..ef5b09213a6 100644
--- a/source/blender/blenkernel/intern/cachefile.c
+++ b/source/blender/blenkernel/intern/cachefile.c
@@ -80,7 +80,6 @@ static void cache_file_copy_data(Main *UNUSED(bmain),
static void cache_file_free_data(ID *id)
{
CacheFile *cache_file = (CacheFile *)id;
- BKE_animdata_free((ID *)cache_file, false);
cachefile_handle_free(cache_file);
BLI_freelistN(&cache_file->object_paths);
}
diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c
index d2829bc1cd6..d1a6ebb222c 100644
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@ -112,8 +112,6 @@ static void camera_free_data(ID *id)
{
Camera *cam = (Camera *)id;
BLI_freelistN(&cam->bg_images);
-
- BKE_animdata_free(id, false);
}
IDTypeInfo IDType_ID_CA = {
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 95d9a7e883d..13e6dc0fa40 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -105,8 +105,6 @@ static void curve_free_data(ID *id)
{
Curve *curve = (Curve *)id;
- BKE_animdata_free((ID *)curve, false);
-
BKE_curve_batch_cache_free(curve);
BKE_nurbList_free(&curve->nurb);
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index e2f28355ff3..6cd2d36c188 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -263,9 +263,6 @@ void BKE_gpencil_free_layers(ListBase *list)
/** Free (or release) any data used by this grease pencil (does not free the gpencil itself). */
void BKE_gpencil_free(bGPdata *gpd, bool free_all)
{
- /* clear animation data */
- BKE_animdata_free(&gpd->id, false);
-
/* free layers */
BKE_gpencil_free_layers(&gpd->layers);
diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c
index 77e3a3dc005..59ecf8178f0 100644
--- a/source/blender/blenkernel/intern/key.c
+++ b/source/blender/blenkernel/intern/key.c
@@ -84,8 +84,6 @@ static void shapekey_free_data(ID *id)
Key *key = (Key *)id;
KeyBlock *kb;
- BKE_animdata_free((ID *)key, false);
-
while ((kb = BLI_pophead(&key->block))) {
if (kb->data) {
MEM_freeN(kb->data);
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c
index d4f25b781bd..02bf4dfac8e 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -99,8 +99,6 @@ static void lattice_free_data(ID *id)
{
Lattice *lattice = (Lattice *)id;
- BKE_animdata_free(&lattice->id, false);
-
BKE_lattice_batch_cache_free(lattice);
MEM_SAFE_FREE(lattice->def);
diff --git a/source/blender/blenkernel/intern/lib_id_delete.c b/source/blender/blenkernel/intern/lib_id_delete.c
index 2e45cd0d202..824d1600ecc 100644
--- a/source/blender/blenkernel/intern/lib_id_delete.c
+++ b/source/blender/blenkernel/intern/lib_id_delete.c
@@ -57,6 +57,7 @@
#include "BLI_listbase.h"
#include "BKE_action.h"
+#include "BKE_animsys.h"
#include "BKE_armature.h"
#include "BKE_brush.h"
#include "BKE_camera.h"
@@ -119,8 +120,7 @@ void BKE_libblock_free_data(ID *id, const bool do_id_user)
BKE_lib_override_library_free(&id->override_library, do_id_user);
}
- /* XXX TODO remove animdata handling from each type's freeing func,
- * and do it here, like for copy! */
+ BKE_animdata_free(id, do_id_user);
}
void BKE_libblock_free_datablock(ID *id, const int UNUSED(flag))
diff --git a/source/blender/blenkernel/intern/light.c b/source/blender/blenkernel/intern/light.c
index d37e0af1ce2..5f14352a1b0 100644
--- a/source/blender/blenkernel/intern/light.c
+++ b/source/blender/blenkernel/intern/light.c
@@ -143,7 +143,6 @@ static void light_make_local(Main *bmain, ID *id, const int flags)
static void light_free_data(ID *id)
{
Light *la = (Light *)id;
- BKE_animdata_free(&la->id, false);
BKE_curvemapping_free(la->curfalloff);
diff --git a/source/blender/blenkernel/intern/lightprobe.c b/source/blender/blenkernel/intern/lightprobe.c
index f360edfbf54..5848444a0d7 100644
--- a/source/blender/blenkernel/intern/lightprobe.c
+++ b/source/blender/blenkernel/intern/lightprobe.c
@@ -110,11 +110,6 @@ static void lightprobe_make_local(Main *bmain, ID *id, const int flags)
BKE_lib_id_make_local_generic(bmain, id, flags);
}
-static void lightprobe_free_data(ID *id)
-{
- BKE_animdata_free(id, false);
-}
-
IDTypeInfo IDType_ID_LP = {
.id_code = ID_LP,
.id_filter = FILTER_ID_LP,
@@ -127,6 +122,6 @@ IDTypeInfo IDType_ID_LP = {
.init_data = lightprobe_init_data,
.copy_data = lightprobe_copy_data,
- .free_data = lightprobe_free_data,
+ .free_data = NULL,
.make_local = lightprobe_make_local,
};
diff --git a/source/blender/blenkernel/intern/linestyle.c b/source/blender/blenkernel/intern/linestyle.c
index c309557e531..c5767e8bbcc 100644
--- a/source/blender/blenkernel/intern/linestyle.c
+++ b/source/blender/blenkernel/intern/linestyle.c
@@ -120,8 +120,6 @@ static void linestyle_free_data(ID *id)
FreestyleLineStyle *linestyle = (FreestyleLineStyle *)id;
LineStyleModifier *linestyle_modifier;
- BKE_animdata_free(&linestyle->id, false);
-
for (int material_slot_index = 0; material_slot_index < MAX_MTEX; material_slot_index++) {
MEM_SAFE_FREE(linestyle->mtex[material_slot_index]);
}
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index ceb03ec6779..5a212bfef37 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -81,8 +81,6 @@ static void mask_free_data(ID *id)
{
Mask *mask = (Mask *)id;
- BKE_animdata_free((ID *)mask, false);
-
/* free mask data */
BKE_mask_layer_free_list(&mask->masklayers);
}
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index 22d7c505e60..368eb099579 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -123,8 +123,6 @@ static void material_free_data(ID *id)
{
Material *material = (Material *)id;
- BKE_animdata_free((ID *)material, false);
-
/* Free gpu material before the ntree */
GPU_material_free(&material->gpumaterial);
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c
index 3154e4c8af9..624911a9792 100644
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@ -92,8 +92,6 @@ static void metaball_free_data(ID *id)
{
MetaBall *metaball = (MetaBall *)id;
- BKE_animdata_free((ID *)metaball, false);
-
BKE_mball_batch_cache_free(metaball);
MEM_SAFE_FREE(metaball->mat);
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 67b94706986..127acf0e464 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -61,6 +61,7 @@
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
+static void mesh_clear_geometry(Mesh *mesh);
static void mesh_tessface_clear_intern(Mesh *mesh, int free_customdata);
static void mesh_init_data(ID *id)
@@ -136,7 +137,9 @@ static void mesh_copy_data(Main *bmain, ID *id_dst, const ID *id_src, const int
static void mesh_free_data(ID *id)
{
Mesh *mesh = (Mesh *)id;
- BKE_mesh_clear_geometry(mesh);
+
+ BKE_mesh_runtime_clear_cache(mesh);
+ mesh_clear_geometry(mesh);
MEM_SAFE_FREE(mesh->mat);
}
@@ -586,11 +589,8 @@ void BKE_mesh_free(Mesh *me)
mesh_free_data(&me->id);
}
-void BKE_mesh_clear_geometry(Mesh *mesh)
+static void mesh_clear_geometry(Mesh *mesh)
{
- BKE_animdata_free(&mesh->id, false);
- BKE_mesh_runtime_clear_cache(mesh);
-
CustomData_free(&mesh->vdata, mesh->totvert);
CustomData_free(&mesh->edata, mesh->totedge);
CustomData_free(&mesh->fdata, mesh->totface);
@@ -615,6 +615,13 @@ void BKE_mesh_clear_geometry(Mesh *mesh)
BKE_mesh_update_customdata_pointers(mesh, false);
}
+void BKE_mesh_clear_geometry(Mesh *mesh)
+{
+ BKE_animdata_free(&mesh->id, false);
+ BKE_mesh_runtime_clear_cache(mesh);
+ mesh_clear_geometry(mesh);
+}
+
static void mesh_tessface_clear_intern(Mesh *mesh, int free_customdata)
{
if (free_customdata) {
diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c
index 796681876e0..f91047f1cd4 100644
--- a/source/blender/blenkernel/intern/movieclip.c
+++ b/source/blender/blenkernel/intern/movieclip.c
@@ -105,7 +105,6 @@ static void movie_clip_free_data(ID *id)
free_buffers(movie_clip);
BKE_tracking_free(&movie_clip->tracking);
- BKE_animdata_free((ID *)movie_clip, false);
}
IDTypeInfo IDType_ID_MC = {
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index a2bd1296c2b..1feb20ec272 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -195,8 +195,6 @@ static void ntree_free_data(ID *id)
bNode *node, *next;
bNodeSocket *sock, *nextsock;
- BKE_animdata_free((ID *)ntree, false);
-
/* XXX hack! node trees should not store execution graphs at all.
* This should be removed when old tree types no longer require it.
* Currently the execution data for texture nodes remains in the tree
@@ -2156,6 +2154,7 @@ static void free_localized_node_groups(bNodeTree *ntree)
void ntreeFreeTree(bNodeTree *ntree)
{
ntree_free_data(&ntree->id);
+ BKE_animdata_free(&ntree->id, false);
}
void ntreeFreeNestedTree(bNodeTree *ntree)
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 211cb633881..41f7531ed85 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -272,7 +272,6 @@ static void object_copy_data(Main *bmain, ID *id_dst, const ID *id_src, const in
static void object_free_data(ID *id)
{
Object *ob = (Object *)id;
- BKE_animdata_free((ID *)ob, false);
DRW_drawdata_free((ID *)ob);
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index cdfaa0fe075..e5d0e2a4f21 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -123,8 +123,6 @@ static void particle_settings_free_data(ID *id)
{
ParticleSettings *particle_settings = (ParticleSettings *)id;
- BKE_animdata_free((ID *)particle_settings, false);
-
for (int a = 0; a < MAX_MTEX; a++) {
MEM_SAFE_FREE(particle_settings->mtex[a]);
}
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index f7f59687cb7..37049014ef7 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -333,8 +333,6 @@ static void scene_free_data(ID *id)
Scene *scene = (Scene *)id;
const bool do_id_user = false;
- BKE_animdata_free((ID *)scene, false);
-
BKE_sequencer_editing_free(scene, do_id_user);
BKE_keyingsets_free(&scene->keyingsets);
diff --git a/source/blender/blenkernel/intern/speaker.c b/source/blender/blenkernel/intern/speaker.c
index 6c855db4ae9..64a9e8a42ee 100644
--- a/source/blender/blenkernel/intern/speaker.c
+++ b/source/blender/blenkernel/intern/speaker.c
@@ -43,11 +43,6 @@ static void speaker_init_data(ID *id)
MEMCPY_STRUCT_AFTER(speaker, DNA_struct_default_get(Speaker), id);
}
-static void speaker_free_data(ID *id)
-{
- BKE_animdata_free(id, false);
-}
-
IDTypeInfo IDType_ID_SPK = {
.id_code = ID_SPK,
.id_filter = FILTER_ID_SPK,
@@ -60,7 +55,7 @@ IDTypeInfo IDType_ID_SPK = {
.init_data = speaker_init_data,
.copy_data = NULL,
- .free_data = speaker_free_data,
+ .free_data = NULL,
.make_local = NULL,
};
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index 088122edd8b..6c4e19cb068 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -109,7 +109,6 @@ static void texture_copy_data(Main *bmain, ID *id_dst, const ID *id_src, const i
static void texture_free_data(ID *id)
{
Tex *texture = (Tex *)id;
- BKE_animdata_free((ID *)texture, false);
/* is no lib link block, but texture extension */
if (texture->nodetree) {
diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c
index 398e53d6cda..a3505869308 100644
--- a/source/blender/blenkernel/intern/world.c
+++ b/source/blender/blenkernel/intern/world.c
@@ -55,7 +55,6 @@
static void world_free_data(ID *id)
{
World *wrld = (World *)id;
- BKE_animdata_free(id, false);
DRW_drawdata_free(id);