[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