[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(<->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