ID-Remap - Step one: core work (cleanup and rework of generic ID datablock handling).
[blender.git] / source / blender / blenkernel / intern / mesh.c
index 2af78cca79f6cb4e16602c60000cfda8356c1b45..4e47dfcce745ee7ade7292217f4e834d1b9c60bf 100644 (file)
@@ -432,33 +432,11 @@ bool BKE_mesh_has_custom_loop_normals(Mesh *me)
  * we need a more generic method, like the expand() functions in
  * readfile.c */
 
-void BKE_mesh_unlink(Mesh *me)
-{
-       int a;
-       
-       if (me == NULL) return;
-
-       if (me->mat) {
-               for (a = 0; a < me->totcol; a++) {
-                       if (me->mat[a])
-                               id_us_min(&me->mat[a]->id);
-                       me->mat[a] = NULL;
-               }
-       }
 
-       if (me->key) {
-               id_us_min(&me->key->id);
-       }
-       me->key = NULL;
-       
-       if (me->texcomesh) me->texcomesh = NULL;
-}
-
-/* do not free mesh itself */
-void BKE_mesh_free(Mesh *me, int unlink)
+/** Free (or release) any data used by this mesh (does not free the mesh itself). */
+void BKE_mesh_free(Mesh *me)
 {
-       if (unlink)
-               BKE_mesh_unlink(me);
+       BKE_animdata_free(&me->id, false);
 
        CustomData_free(&me->vdata, me->totvert);
        CustomData_free(&me->edata, me->totedge);
@@ -466,16 +444,10 @@ void BKE_mesh_free(Mesh *me, int unlink)
        CustomData_free(&me->ldata, me->totloop);
        CustomData_free(&me->pdata, me->totpoly);
 
-       if (me->adt) {
-               BKE_animdata_free(&me->id);
-               me->adt = NULL;
-       }
-       
-       if (me->mat) MEM_freeN(me->mat);
-       
-       if (me->bb) MEM_freeN(me->bb);
-       if (me->mselect) MEM_freeN(me->mselect);
-       if (me->edit_btmesh) MEM_freeN(me->edit_btmesh);
+       MEM_SAFE_FREE(me->mat);
+       MEM_SAFE_FREE(me->bb);
+       MEM_SAFE_FREE(me->mselect);
+       MEM_SAFE_FREE(me->edit_btmesh);
 }
 
 static void mesh_tessface_clear_intern(Mesh *mesh, int free_customdata)