Fix: issue in previous commit

Many tests started failing after 173c41c1c0
due to memory leaks.
This commit is contained in:
Jacques Lucke 2024-03-02 23:56:37 +01:00
parent 173c41c1c0
commit 65083472ec
3 changed files with 7 additions and 5 deletions

View File

@ -311,6 +311,8 @@ void mesh_calc_edges(Mesh &mesh, bool keep_existing_edges, bool select_new_edges
void mesh_flip_faces(Mesh &mesh, const IndexMask &selection);
void mesh_ensure_required_data_layers(Mesh &mesh);
/** Set mesh vertex normals to known-correct values, avoiding future lazy computation. */
void mesh_vert_normals_assign(Mesh &mesh, Span<float3> vert_normals);

View File

@ -477,7 +477,7 @@ void mesh_ensure_default_color_attribute_on_add(Mesh &mesh,
mesh.default_color_attribute = BLI_strdupn(id.name().data(), id.name().size());
}
static void mesh_ensure_cdlayers_primary(Mesh &mesh)
void mesh_ensure_required_data_layers(Mesh &mesh)
{
MutableAttributeAccessor attributes = mesh.attributes_for_write();
AttributeInitConstruct attribute_init;
@ -548,8 +548,6 @@ void BKE_mesh_clear_geometry_and_metadata(Mesh *mesh)
BKE_mesh_runtime_clear_cache(mesh);
mesh_clear_geometry(*mesh);
clear_attribute_names(*mesh);
blender::bke::mesh_ensure_cdlayers_primary(*mesh);
}
static void mesh_tessface_clear_intern(Mesh *mesh, int free_customdata)
@ -698,7 +696,7 @@ Mesh *BKE_mesh_new_nomain(const int verts_num,
mesh->faces_num = faces_num;
mesh->corners_num = corners_num;
blender::bke::mesh_ensure_cdlayers_primary(*mesh);
blender::bke::mesh_ensure_required_data_layers(*mesh);
BKE_mesh_face_offsets_ensure_alloc(mesh);
return mesh;
@ -800,7 +798,7 @@ Mesh *BKE_mesh_new_nomain_from_template_ex(const Mesh *me_src,
/* The destination mesh should at least have valid primary CD layers,
* even in cases where the source mesh does not. */
blender::bke::mesh_ensure_cdlayers_primary(*me_dst);
blender::bke::mesh_ensure_required_data_layers(*me_dst);
BKE_mesh_face_offsets_ensure_alloc(me_dst);
if (do_tessface && !CustomData_get_layer(&me_dst->fdata_legacy, CD_MFACE)) {
CustomData_add_layer(&me_dst->fdata_legacy, CD_MFACE, CD_SET_DEFAULT, me_dst->totface_legacy);

View File

@ -201,6 +201,8 @@ static void rna_Mesh_clear_geometry(Mesh *mesh)
BKE_mesh_clear_geometry_and_metadata(mesh);
BKE_animdata_free(&mesh->id, false);
blender::bke::mesh_ensure_required_data_layers(*mesh);
DEG_id_tag_update(&mesh->id, ID_RECALC_GEOMETRY_ALL_MODES);
WM_main_add_notifier(NC_GEOM | ND_DATA, mesh);
}