[Bf-blender-cvs] [be2e41c397b] master: Cleanup: Move `BKE_animdata_free()` call out of each IDType free data.
Bastien Montagne
noreply at git.blender.org
Mon Mar 9 18:43:21 CET 2020
Commit: be2e41c397ba4d13b13e817bee46628ce984bd6b
Author: Bastien Montagne
Date: Mon Mar 9 18:40:06 2020 +0100
Branches: master
https://developer.blender.org/rBbe2e41c397ba4d13b13e817bee46628ce984bd6b
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).
===================================================================
M source/blender/blenkernel/intern/armature.c
M source/blender/blenkernel/intern/cachefile.c
M source/blender/blenkernel/intern/camera.c
M source/blender/blenkernel/intern/curve.c
M source/blender/blenkernel/intern/gpencil.c
M source/blender/blenkernel/intern/key.c
M source/blender/blenkernel/intern/lattice.c
M source/blender/blenkernel/intern/lib_id_delete.c
M source/blender/blenkernel/intern/light.c
M source/blender/blenkernel/intern/lightprobe.c
M source/blender/blenkernel/intern/linestyle.c
M source/blender/blenkernel/intern/mask.c
M source/blender/blenkernel/intern/material.c
M source/blender/blenkernel/intern/mball.c
M source/blender/blenkernel/intern/mesh.c
M source/blender/blenkernel/intern/movieclip.c
M source/blender/blenkernel/intern/node.c
M source/blender/blenkernel/intern/object.c
M source/blender/blenkernel/intern/particle.c
M source/blender/blenkernel/intern/scene.c
M source/blender/blenkernel/intern/speaker.c
M source/blender/blenkernel/intern/texture.c
M source/blender/blenkernel/intern/world.c
===================================================================
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 *nt
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list