[Bf-blender-cvs] [ad6495d] free-refcount-ids: ID free: another round of cleanup & fixes (mostly insconsitancies among IDs code)...

Bastien Montagne noreply at git.blender.org
Wed Sep 30 22:00:17 CEST 2015


Commit: ad6495d14b3a58ce4b4ed02bb973f08e35a263c7
Author: Bastien Montagne
Date:   Wed Sep 30 21:59:24 2015 +0200
Branches: free-refcount-ids
https://developer.blender.org/rBad6495d14b3a58ce4b4ed02bb973f08e35a263c7

ID free: another round of cleanup & fixes (mostly insconsitancies among IDs code)...

===================================================================

M	source/blender/blenkernel/intern/brush.c
M	source/blender/blenkernel/intern/camera.c
M	source/blender/blenkernel/intern/curve.c
M	source/blender/blenkernel/intern/image.c
M	source/blender/blenkernel/intern/lamp.c
M	source/blender/blenkernel/intern/lattice.c
M	source/blender/blenkernel/intern/linestyle.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/object.c
M	source/blender/blenkernel/intern/particle.c
M	source/blender/blenkernel/intern/scene.c
M	source/blender/blenkernel/intern/texture.c
M	source/blender/blenkernel/intern/world.c

===================================================================

diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index 1e21c26..6403492 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -204,17 +204,24 @@ Brush *BKE_brush_copy(Brush *brush)
  */
 void BKE_brush_release_datablocks(Brush *brush)
 {
-	id_us_min((ID *)brush->mtex.tex);
-	brush->mtex.tex = NULL;
+	if (brush->mtex.tex) {
+		id_us_min(&brush->mtex.tex->id);
+		brush->mtex.tex = NULL;
+	}
 
-	id_us_min((ID *)brush->mask_mtex.tex);
-	brush->mask_mtex.tex = NULL;
+	if (brush->mask_mtex.tex) {
+		id_us_min(&brush->mask_mtex.tex->id);
+		brush->mask_mtex.tex = NULL;
+	}
 
-	id_us_min((ID *)brush->paint_curve);
-	brush->paint_curve = NULL;
+	if (brush->paint_curve) {
+		id_us_min(&brush->paint_curve->id);
+		brush->paint_curve = NULL;
+	}
 
 	/* No ID refcount here... */
 	brush->toggle_brush = NULL;
+	brush->clone.image = NULL;
 }
 
 /**
@@ -234,11 +241,11 @@ void BKE_brush_free(Brush *brush, const bool do_id_user)
 		IMB_freeImBuf(brush->icon_imbuf);
 	}
 
-	BKE_previewimg_free(&(brush->preview));
-
 	curvemapping_free(brush->curve);
 
 	MEM_SAFE_FREE(brush->gradient);
+
+	BKE_previewimg_free(&(brush->preview));
 }
 
 static void extern_local_brush(Brush *brush)
diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c
index ba9ac48..d3aaa74 100644
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@ -151,9 +151,6 @@ void BKE_camera_make_local(Camera *cam)
  */
 void BKE_camera_release_datablocks(Camera *ca)
 {
-	if (ca == NULL)
-		return;
-
 	/* No ID refcount here... */
 	ca->dof_ob = NULL;
 }
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 1160028..c4296a2 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -80,30 +80,35 @@ void BKE_curve_release_datablocks(Curve *cu)
 
 	for (a = 0; a < cu->totcol; a++) {
 		if (cu->mat[a]) {
-			cu->mat[a]->id.us--;
+			id_us_min(&cu->mat[a]->id);
 			cu->mat[a] = NULL;
 		}
 	}
 	if (cu->vfont) {
-		cu->vfont->id.us--;
+		id_us_min(&cu->vfont->id);
 		cu->vfont = NULL;
 	}
 	if (cu->vfontb) {
-		cu->vfontb->id.us--;
+		id_us_min(&cu->vfontb->id);
 		cu->vfontb = NULL;
 	}
 	if (cu->vfonti) {
-		cu->vfonti->id.us--;
+		id_us_min(&cu->vfonti->id);
 		cu->vfonti = NULL;
 	}
 	if (cu->vfontbi) {
-		cu->vfontbi->id.us--;
+		id_us_min(&cu->vfontbi->id);
 		cu->vfontbi = NULL;
 	}
 	if (cu->key) {
-		cu->key->id.us--;
+		id_us_min(&cu->key->id);
 		cu->key = NULL;
 	}
+
+	/* No ID refcount here... */
+	cu->bevobj = NULL;
+	cu->taperobj = NULL;
+	cu->textoncurve = NULL;
 }
 
 /* frees editcurve entirely */
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index bb38d6c..85d383b 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -344,10 +344,6 @@ void BKE_image_free(Image *ima, const bool UNUSED(do_id_user))
 
 	image_free_packedfiles(ima);
 
-	BKE_icon_id_delete(&ima->id);
-
-	BKE_previewimg_free(&ima->preview);
-
 	for (a = 0; a < IMA_MAX_RENDER_SLOT; a++) {
 		if (ima->renders[a]) {
 			RE_FreeRenderResult(ima->renders[a]);
@@ -357,6 +353,9 @@ void BKE_image_free(Image *ima, const bool UNUSED(do_id_user))
 
 	image_free_views(ima);
 	MEM_SAFE_FREE(ima->stereo3d_format);
+
+	BKE_previewimg_free(&ima->preview);
+	BKE_icon_id_delete(&ima->id);
 }
 
 /* only image block itself */
diff --git a/source/blender/blenkernel/intern/lamp.c b/source/blender/blenkernel/intern/lamp.c
index 6974cfb..309ba46 100644
--- a/source/blender/blenkernel/intern/lamp.c
+++ b/source/blender/blenkernel/intern/lamp.c
@@ -220,13 +220,10 @@ void BKE_lamp_release_datablocks(Lamp *la)
 	MTex *mtex;
 	int a;
 
-	if (la == NULL)
-		return;
-
 	for (a = 0; a < MAX_MTEX; a++) {
 		mtex = la->mtex[a];
 		if (mtex && mtex->tex) {
-			mtex->tex->id.us--;
+			id_us_min(&mtex->tex->id);
 			mtex->tex = NULL;
 		}
 	}
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c
index 403befc..23bc2f2 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -300,11 +300,8 @@ Lattice *BKE_lattice_copy(Lattice *lt)
  */
 void BKE_lattice_release_datablocks(Lattice *lt)
 {
-	if (lt == NULL)
-		return;
-
 	if (lt->key) {
-		lt->key->id.us--;
+		id_us_min(&lt->key->id);
 		lt->key = NULL;
 	}
 }
diff --git a/source/blender/blenkernel/intern/linestyle.c b/source/blender/blenkernel/intern/linestyle.c
index 46524f5..7e6e532 100644
--- a/source/blender/blenkernel/intern/linestyle.c
+++ b/source/blender/blenkernel/intern/linestyle.c
@@ -133,13 +133,10 @@ void BKE_linestyle_release_datablocks(FreestyleLineStyle *linestyle)
 	MTex *mtex;
 	int a;
 
-	if (linestyle == NULL)
-		return;
-
 	for (a = 0; a < MAX_MTEX; a++) {
 		mtex = linestyle->mtex[a];
 		if (mtex && mtex->tex) {
-			mtex->tex->id.us--;
+			id_us_min(&mtex->tex->id);
 			mtex->tex = NULL;
 		}
 	}
@@ -169,9 +166,11 @@ void BKE_linestyle_free(FreestyleLineStyle *linestyle, const bool do_id_user)
 	if (linestyle->nodetree) {
 		ntreeFreeTree(linestyle->nodetree);
 		MEM_freeN(linestyle->nodetree);
+		linestyle->nodetree = NULL;
 	}
 
 	BKE_animdata_free(&linestyle->id);
+
 	while ((m = (LineStyleModifier *)linestyle->color_modifiers.first))
 		BKE_linestyle_color_modifier_remove(linestyle, m);
 	while ((m = (LineStyleModifier *)linestyle->alpha_modifiers.first))
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index 8cfde20..5522f8a 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -91,13 +91,10 @@ void BKE_material_release_datablocks(Material *ma)
 	MTex *mtex;
 	int a;
 
-	if (ma == NULL)
-		return;
-
 	for (a = 0; a < MAX_MTEX; a++) {
 		mtex = ma->mtex[a];
 		if (mtex && mtex->tex) {
-			mtex->tex->id.us--;
+			id_us_min(&mtex->tex->id);
 			mtex->tex = NULL;
 		}
 	}
@@ -116,8 +113,10 @@ void BKE_material_release_datablocks(Material *ma)
 void BKE_material_free(Material *ma, const bool do_id_user)
 {
 	int a;
-	
-	BKE_material_release_datablocks(ma);
+
+	if (do_id_user)	 {
+		BKE_material_release_datablocks(ma);
+	}
 
 	for (a = 0; a < MAX_MTEX; a++) {
 		MEM_SAFE_FREE(ma->mtex[a]);
@@ -128,9 +127,6 @@ void BKE_material_free(Material *ma, const bool do_id_user)
 	
 	BKE_animdata_free((ID *)ma);
 	
-	BKE_previewimg_free(&ma->preview);
-	BKE_icon_id_delete((ID *)ma);
-	
 	/* is no lib link block, but material extension */
 	if (ma->nodetree) {
 		ntreeFreeTree_ex(ma->nodetree, do_id_user);
@@ -141,6 +137,9 @@ void BKE_material_free(Material *ma, const bool do_id_user)
 	MEM_SAFE_FREE(ma->texpaintslot);
 
 	GPU_material_free(&ma->gpumaterial);
+
+	BKE_previewimg_free(&ma->preview);
+	BKE_icon_id_delete((ID *)ma);
 }
 
 void init_material(Material *ma)
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c
index d16ce85..485176c 100644
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@ -77,7 +77,7 @@ void BKE_mball_release_datablocks(MetaBall *mb)
 	
 	for (a = 0; a < mb->totcol; a++) {
 		if (mb->mat[a]) {
-			mb->mat[a]->id.us--;
+			id_us_min(&mb->mat[a]->id);
 			mb->mat[a] = NULL;
 		}
 	}
@@ -97,10 +97,8 @@ void BKE_mball_free(MetaBall *mb, const bool do_id_user)
 		BKE_mball_release_datablocks(mb);
 	}
 	
-	if (mb->adt) {
-		BKE_animdata_free((ID *)mb);
-		mb->adt = NULL;
-	}
+	BKE_animdata_free((ID *)mb);
+
 	MEM_SAFE_FREE(mb->mat);
 
 	BLI_freelistN(&mb->elems);
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 27e0c87..216d0a1 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -440,26 +440,22 @@ void BKE_mesh_release_datablocks(Mesh *me)
 {
 	int a;
 	
-	if (me == NULL)
-		return;
-
 	if (me->mat) {
 		for (a = 0; a < me->totcol; a++) {
 			if (me->mat[a]) {
-				me->mat[a]->id.us--;
+				id_us_min(&me->mat[a]->id);
 				me->mat[a] = NULL;
 			}
 		}
 	}
 
 	if (me->key) {
-		me->key->id.us--;
+		id_us_min(&me->key->id);
 		me->key = NULL;
 	}
 	
-	if (me->texcomesh) {
-		me->texcomesh = NULL;  /* No user refcount handling here??? */
-	}
+	/* No ID refcount here... */
+	me->texcomesh = NULL;
 }
 
 /**
@@ -481,10 +477,8 @@ void BKE_mesh_free(Mesh *me, const bool do_id_user)
 	CustomData_free(&me->ldata, me->totloop);
 	CustomData_free(&me->pdata, me->totpoly);
 
-	if (me->adt) {
-		BKE_animdata_free(&me->id);
-		me->adt = NULL;
-	}
+	BKE_animdata_free(&me->id);
+
 	MEM_SAFE_FREE(me->mat);
 	MEM_SAFE_FREE(me->bb);
 	MEM_SAFE_FREE(me->mselect);
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index f338d9db..4aa0b01 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -390,26 +390,25 @@ void BKE_object_release_datablocks(Object *ob)
 	int a;
 
 	if (ob->data) {
-		ID *id = ob->data;
-		id->us--;
+		id_us_min((ID *)ob->data);
 		ob->data = NULL;
 	}
 
 	if (ob->mat) {
 		for (a = 0; a < ob->totcol; a++) {
 			if (ob->mat[a]) {
-				ob->mat[a]->id.us--;
+				id_us_min(&ob->mat[a]->id);
 				ob->mat[a] = NULL;
 			}
 		}
 	}
 
 	if (ob->poselib) {
-		ob->poselib->id.us--;
+		id_us_min(&ob->poselib->id);
 		ob->poselib = NULL;
 	}
 	if (ob->gpd) {
-		ob->gpd->id.us--;
+		id_us_min(&ob->gpd->id);
 		ob->gpd = NULL;
 	}
 }
@@ -433,10 +432,9 @@ void BKE_object_free(Object *ob, const bool do_id_user)
 	MEM_SAFE_FREE(ob->matbits);
 	MEM_SAFE_FREE(ob->iuser);
 	MEM_SAFE_FREE(ob->bb);
-	if (ob->adt) {
-		BKE_animdata_free((ID *)ob);
-		ob->adt = NULL;
-	}
+
+	BKE_animdata_free((ID *)ob);
+
 	BLI_freelistN(&ob->defbase);
 	if (ob->pose) {
 		BKE_pose_free_ex(ob->pose, do_id_user);
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index c3c211a..4e7e217 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -381,13 +381,10 @@ void BK

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list