[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43636] branches/bmesh/blender/source/ blender/bmesh/operators/mesh_conv.c: speedup for mesh -> bmesh conversion

Campbell Barton ideasman42 at gmail.com
Mon Jan 23 14:50:10 CET 2012


Revision: 43636
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43636
Author:   campbellbarton
Date:     2012-01-23 13:50:00 +0000 (Mon, 23 Jan 2012)
Log Message:
-----------
speedup for mesh -> bmesh conversion
- was looping over all verts/edges/faces to setup the selection store, even when there was no selection store (mselect), since this is fairly common case, add a check.

also use BLI_array_growitems rather then BLI_array_growone to allocate in larger steps.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c

Modified: branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2012-01-23 13:44:57 UTC (rev 43635)
+++ branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2012-01-23 13:50:00 UTC (rev 43636)
@@ -204,14 +204,15 @@
 
 		BLI_array_empty(fedges);
 		BLI_array_empty(verts);
+
+		BLI_array_growitems(fedges, mpoly->totloop);
+		BLI_array_growitems(verts, mpoly->totloop);
+
 		for (j=0; j<mpoly->totloop; j++) {
 			ml = &me->mloop[mpoly->loopstart+j];
 			v = vt[ml->v];
 			e = et[ml->e];
 
-			BLI_array_growone(fedges);
-			BLI_array_growone(verts);
-
 			fedges[j] = e;
 			verts[j] = v;
 		}
@@ -277,7 +278,7 @@
 		}
 	}
 
-	{
+	if (me->mselect && me->totselect != 0) {
 		BMIter iter;
 		BMVert *vertex;
 		BMEdge *edge;
@@ -323,6 +324,13 @@
 		MEM_freeN(edge_array);
 		MEM_freeN(face_array);
 	}
+	else {
+		me->totselect = 0;
+		if (me->mselect) {
+			MEM_freeN(me->mselect);
+			me->mselect = NULL;
+		}
+	}
 
 	BLI_array_free(fedges);
 	BLI_array_free(verts);



More information about the Bf-blender-cvs mailing list