[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45281] trunk/blender/source/blender: minor speedup converting a BMesh to a Mesh - avoid loop over all faces to count how many loops to use , since BMesh stores totloop.

Campbell Barton ideasman42 at gmail.com
Fri Mar 30 08:45:30 CEST 2012


Revision: 45281
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45281
Author:   campbellbarton
Date:     2012-03-30 06:45:13 +0000 (Fri, 30 Mar 2012)
Log Message:
-----------
minor speedup converting a BMesh to a Mesh - avoid loop over all faces to count how many loops to use, since BMesh stores totloop.

also use camel case for UndoMesh (convention)

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
    trunk/blender/source/blender/editors/mesh/editmesh_utils.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c	2012-03-30 06:11:59 UTC (rev 45280)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c	2012-03-30 06:45:13 UTC (rev 45281)
@@ -435,32 +435,26 @@
 	BMLoop *l;
 	BMFace *f;
 	BMIter iter, liter;
-	int i, j, *keyi, ototvert, totloop;
+	int i, j, *keyi, ototvert;
 
 	ototvert = me->totvert;
 
-	/* new Vertex block */
+	/* new vertex block */
 	if (bm->totvert == 0) mvert = NULL;
 	else mvert = MEM_callocN(bm->totvert * sizeof(MVert), "loadeditbMesh vert");
 
-	/* new Edge block */
+	/* new edge block */
 	if (bm->totedge == 0) medge = NULL;
 	else medge = MEM_callocN(bm->totedge * sizeof(MEdge), "loadeditbMesh edge");
 
-	/* build ngon data */
-	/* new Ngon Face block */
+	/* new ngon face block */
 	if (bm->totface == 0) mpoly = NULL;
 	else mpoly = MEM_callocN(bm->totface * sizeof(MPoly), "loadeditbMesh poly");
 
-	/* find number of loops to allocate */
-	totloop = 0;
-	BM_ITER(f, &iter, bm, BM_FACES_OF_MESH, NULL) {
-		totloop += f->len;
-	}
+	/* new loop block */
+	if (bm->totloop == 0) mloop = NULL;
+	else mloop = MEM_callocN(bm->totloop * sizeof(MLoop), "loadeditbMesh loop");
 
-	if (totloop == 0) mloop = NULL;
-	else mloop = MEM_callocN(totloop * sizeof(MLoop), "loadeditbMesh loop");
-
 	/* lets save the old verts just in case we are actually working on
 	 * a key ... we now do processing of the keys at the end */
 	oldverts = me->mvert;
@@ -478,7 +472,7 @@
 	/* add new custom data */
 	me->totvert = bm->totvert;
 	me->totedge = bm->totedge;
-	me->totloop = totloop;
+	me->totloop = bm->totloop;
 	me->totpoly = bm->totface;
 	/* will be overwritten with a valid value if 'dotess' is set, otherwise we
 	 * end up with 'me->totface' and me->mface == NULL which can crash [#28625]

Modified: trunk/blender/source/blender/editors/mesh/editmesh_utils.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_utils.c	2012-03-30 06:11:59 UTC (rev 45280)
+++ trunk/blender/source/blender/editors/mesh/editmesh_utils.c	2012-03-30 06:45:13 UTC (rev 45281)
@@ -512,11 +512,11 @@
 	return NULL;
 }
 
-typedef struct undomesh {
+typedef struct UndoMesh {
 	Mesh me;
 	int selectmode;
 	char obname[MAX_ID_NAME - 2];
-} undomesh;
+} UndoMesh;
 
 /* undo simply makes copies of a bmesh */
 static void *editbtMesh_to_undoMesh(void *emv, void *obdata)
@@ -524,7 +524,7 @@
 	BMEditMesh *em = emv;
 	Mesh *obme = obdata;
 	
-	undomesh *um = MEM_callocN(sizeof(undomesh), "undo Mesh");
+	UndoMesh *um = MEM_callocN(sizeof(UndoMesh), "undo Mesh");
 	BLI_strncpy(um->obname, em->ob->id.name + 2, sizeof(um->obname));
 	
 	/* make sure shape keys work */
@@ -543,7 +543,7 @@
 {
 	BMEditMesh *em = em_v, *em_tmp;
 	Object *ob;
-	undomesh *um = umv;
+	UndoMesh *um = umv;
 	BMesh *bm;
 
 	/* BMESH_TODO - its possible the name wont be found right?, should fallback */




More information about the Bf-blender-cvs mailing list