[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60352] trunk/blender/source/blender: allocate bmesh data from known sizes where possible ( was still using defaults in places),

Campbell Barton ideasman42 at gmail.com
Tue Sep 24 05:31:00 CEST 2013


Revision: 60352
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60352
Author:   campbellbarton
Date:     2013-09-24 03:31:00 +0000 (Tue, 24 Sep 2013)
Log Message:
-----------
allocate bmesh data from known sizes where possible (was still using defaults in places),
add macros for initializing BMAllocTemplate's, also add assert on invalid use of bmesh_sfme()

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
    trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
    trunk/blender/source/blender/bmesh/intern/bmesh_core.c
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h
    trunk/blender/source/blender/editors/mesh/editmesh_utils.c
    trunk/blender/source/blender/editors/sculpt_paint/sculpt.c

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2013-09-24 02:16:52 UTC (rev 60351)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2013-09-24 03:31:00 UTC (rev 60352)
@@ -530,8 +530,9 @@
 BMesh *BKE_mesh_to_bmesh(Mesh *me, Object *ob)
 {
 	BMesh *bm;
+	const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(me);
 
-	bm = BM_mesh_create(&bm_mesh_allocsize_default);
+	bm = BM_mesh_create(&allocsize);
 
 	BM_mesh_bm_from_me(bm, me, false, true, ob->shapenr);
 

Modified: trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c	2013-09-24 02:16:52 UTC (rev 60351)
+++ trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c	2013-09-24 03:31:00 UTC (rev 60352)
@@ -232,8 +232,9 @@
 BMesh *DM_to_bmesh(DerivedMesh *dm, const bool calc_face_normal)
 {
 	BMesh *bm;
+	const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_DM(dm);
 
-	bm = BM_mesh_create(&bm_mesh_allocsize_default);
+	bm = BM_mesh_create(&allocsize);
 
 	DM_to_bmesh_ex(dm, bm, calc_face_normal);
 

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_construct.c	2013-09-24 02:16:52 UTC (rev 60351)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_construct.c	2013-09-24 03:31:00 UTC (rev 60352)
@@ -911,10 +911,7 @@
 	BMEditSelection *ese;
 	BMIter iter;
 	int i;
-	const BMAllocTemplate allocsize = {bm_old->totvert,
-	                                   bm_old->totedge,
-	                                   bm_old->totloop,
-	                                   bm_old->totface};
+	const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_BM(bm_old);
 
 	/* allocate a bmesh */
 	bm_new = BM_mesh_create(&allocsize);

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_core.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_core.c	2013-09-24 02:16:52 UTC (rev 60351)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_core.c	2013-09-24 03:31:00 UTC (rev 60352)
@@ -1278,6 +1278,7 @@
 	}
 
 	if (!l_v1 || !l_v2) {
+		BLI_assert(0);
 		return NULL;
 	}
 

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h	2013-09-24 02:16:52 UTC (rev 60351)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h	2013-09-24 03:31:00 UTC (rev 60352)
@@ -60,6 +60,13 @@
 extern const BMAllocTemplate bm_mesh_allocsize_default;
 extern const BMAllocTemplate bm_mesh_chunksize_default;
 
+#define BMALLOC_TEMPLATE_FROM_BM(bm) { (CHECK_TYPE_INLINE(bm, BMesh *), \
+	(bm)->totvert), (bm)->totedge, (bm)->totloop, (bm)->totface}
+#define BMALLOC_TEMPLATE_FROM_ME(me) { (CHECK_TYPE_INLINE(me, Mesh *), \
+	(me)->totvert), (me)->totedge, (me)->totloop, (me)->totpoly}
+#define BMALLOC_TEMPLATE_FROM_DM(dm) { (CHECK_TYPE_INLINE(dm, DerivedMesh *), \
+	(dm)->getNumVerts(dm)), (dm)->getNumEdges(dm), (dm)->getNumLoops(dm), (dm)->getNumPolys(dm)}
+
 enum {
 	BM_MESH_CREATE_USE_TOOLFLAGS = (1 << 0)
 };

Modified: trunk/blender/source/blender/editors/mesh/editmesh_utils.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_utils.c	2013-09-24 02:16:52 UTC (rev 60351)
+++ trunk/blender/source/blender/editors/mesh/editmesh_utils.c	2013-09-24 03:31:00 UTC (rev 60352)
@@ -662,10 +662,7 @@
 	UndoMesh *um = umv;
 	BMesh *bm;
 
-	const BMAllocTemplate allocsize = {um->me.totvert,
-	                                   um->me.totedge,
-	                                   um->me.totloop,
-	                                   um->me.totpoly};
+	const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(&um->me);
 
 	ob->shapenr = em->bm->shapenr = um->shapenr;
 

Modified: trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2013-09-24 02:16:52 UTC (rev 60351)
+++ trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2013-09-24 03:31:00 UTC (rev 60352)
@@ -4677,10 +4677,7 @@
 	Object *ob = CTX_data_active_object(C);
 	SculptSession *ss = ob->sculpt;
 	Mesh *me = ob->data;
-	const BMAllocTemplate allocsize = {me->totvert,
-	                                   me->totedge,
-	                                   me->totloop,
-	                                   me->totpoly};
+	const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(me);
 
 	sculpt_pbvh_clear(ob);
 




More information about the Bf-blender-cvs mailing list