[Bf-blender-cvs] [c4a3c9d] id-remap: Merge branch 'free-refcount-ids' into id-remap

Bastien Montagne noreply at git.blender.org
Thu Sep 24 20:50:06 CEST 2015


Commit: c4a3c9d0069455129c36e1cfb6735343608da7ad
Author: Bastien Montagne
Date:   Thu Sep 24 20:49:58 2015 +0200
Branches: id-remap
https://developer.blender.org/rBc4a3c9d0069455129c36e1cfb6735343608da7ad

Merge branch 'free-refcount-ids' into id-remap

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



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

diff --cc source/blender/blenkernel/BKE_curve.h
index 061270b,b1f7903..3105b9a
--- a/source/blender/blenkernel/BKE_curve.h
+++ b/source/blender/blenkernel/BKE_curve.h
@@@ -66,10 -66,9 +66,10 @@@ typedef struct CurveCache 
  #define CU_DO_2DFILL(cu)  ((((cu)->flag & CU_3D) == 0) && (((cu)->flag & (CU_FRONT | CU_BACK)) != 0))
  
  /* ** Curve ** */
- void BKE_curve_unlink(struct Curve *cu);
- void BKE_curve_free(struct Curve *cu);
+ void BKE_curve_release_datablocks(struct Curve *cu);
+ void BKE_curve_free(struct Curve *cu, const bool do_id_user);
  void BKE_curve_editfont_free(struct Curve *cu);
 +void BKE_curve_init(struct Curve *cu);
  struct Curve *BKE_curve_add(struct Main *bmain, const char *name, int type);
  struct Curve *BKE_curve_copy(struct Curve *cu);
  void BKE_curve_make_local(struct Curve *cu);
diff --cc source/blender/blenkernel/BKE_mball.h
index 0574b88,d2b9e2d..e7dfb45
--- a/source/blender/blenkernel/BKE_mball.h
+++ b/source/blender/blenkernel/BKE_mball.h
@@@ -38,9 -38,8 +38,9 @@@ struct Object
  struct Scene;
  struct MetaElem;
  
- void BKE_mball_unlink(struct MetaBall *mb);
- void BKE_mball_free(struct MetaBall *mb);
+ void BKE_mball_release_datablocks(struct MetaBall *mb);
+ void BKE_mball_free(struct MetaBall *mb, const bool do_id_user);
 +void BKE_mball_init(struct MetaBall *mb);
  struct MetaBall *BKE_mball_add(struct Main *bmain, const char *name);
  struct MetaBall *BKE_mball_copy(struct MetaBall *mb);
  
diff --cc source/blender/blenkernel/BKE_mesh.h
index 4c52ae8,7c6ea95..754fcf1
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@@ -80,9 -80,8 +80,9 @@@ int poly_get_adj_loops_from_vert
  
  int BKE_mesh_edge_other_vert(const struct MEdge *e, int v);
  
- void BKE_mesh_unlink(struct Mesh *me);
- void BKE_mesh_free(struct Mesh *me, int unlink);
+ void BKE_mesh_release_datablocks(struct Mesh *me);
+ void BKE_mesh_free(struct Mesh *me, const bool do_id_user);
 +void BKE_mesh_init(struct Mesh *me);
  struct Mesh *BKE_mesh_add(struct Main *bmain, const char *name);
  struct Mesh *BKE_mesh_copy_ex(struct Main *bmain, struct Mesh *me);
  struct Mesh *BKE_mesh_copy(struct Mesh *me);
diff --cc source/blender/blenkernel/intern/curve.c
index 8eed1f4,4321142..dafea12
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@@ -146,25 -160,40 +160,39 @@@ void BKE_curve_free(Curve *cu, const bo
  	BKE_curve_editfont_free(cu);
  
  	BKE_curve_editNurb_free(cu);
- 	BKE_curve_unlink(cu);
+ 
+ 	if (do_id_user) {
+ 		BKE_curve_release_datablocks(cu);
+ 	}
+ 
  	BKE_animdata_free((ID *)cu);
  
- 	if (cu->mat)
+ 	if (cu->mat) {
  		MEM_freeN(cu->mat);
- 	if (cu->str)
+ 		cu->mat = NULL;
+ 	}
+ 	if (cu->str) {
  		MEM_freeN(cu->str);
- 	if (cu->strinfo)
+ 		cu->str = NULL;
+ 	}
+ 	if (cu->strinfo) {
  		MEM_freeN(cu->strinfo);
- 	if (cu->bb)
+ 		cu->strinfo = NULL;
+ 	}
+ 	if (cu->bb) {
  		MEM_freeN(cu->bb);
- 	if (cu->tb)
+ 		cu->bb = NULL;
+ 	}
+ 	if (cu->tb) {
  		MEM_freeN(cu->tb);
+ 		cu->tb = NULL;
+ 	}
  }
  
 -Curve *BKE_curve_add(Main *bmain, const char *name, int type)
 +void BKE_curve_init(Curve *cu)
  {
 -	Curve *cu;
 +	BLI_assert(MEMCMP_NULL_STRUCT_OFS(cu, id));
  
 -	cu = BKE_libblock_alloc(bmain, ID_CU, name);
  	copy_v3_fl(cu->size, 1.0f);
  	cu->flag = CU_FRONT | CU_BACK | CU_DEFORM_BOUNDS_OFF | CU_PATH_RADIUS;
  	cu->pathlen = 100;
diff --cc source/blender/blenkernel/intern/mball.c
index 48f1a1a,4ff964f..83a029b
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@@ -86,18 -101,24 +101,22 @@@ void BKE_mball_free(MetaBall *mb, cons
  		BKE_animdata_free((ID *)mb);
  		mb->adt = NULL;
  	}
- 	if (mb->mat) MEM_freeN(mb->mat);
+ 	if (mb->mat) {
+ 		MEM_freeN(mb->mat);
+ 		mb->mat = NULL;
+ 	}
+ 
  	BLI_freelistN(&mb->elems);
- 	if (mb->disp.first) BKE_displist_free(&mb->disp);
+ 	BKE_displist_free(&mb->disp);
  }
  
 -MetaBall *BKE_mball_add(Main *bmain, const char *name)
 +void BKE_mball_init(MetaBall *mb)
  {
 -	MetaBall *mb;
 -	
 -	mb = BKE_libblock_alloc(bmain, ID_MB, name);
 -	
 +	BLI_assert(MEMCMP_NULL_STRUCT_OFS(mb, id));
 +
  	mb->size[0] = mb->size[1] = mb->size[2] = 1.0;
  	mb->texflag = MB_AUTOSPACE;
 -	
 +
  	mb->wiresize = 0.4f;
  	mb->rendersize = 0.2f;
  	mb->thresh = 0.6f;




More information about the Bf-blender-cvs mailing list