[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53863] trunk/blender/source/blender/ blenkernel/intern/pbvh_bmesh.c: minor speedup for dyntopo edge queue - replace iterator with while loop.

Campbell Barton ideasman42 at gmail.com
Thu Jan 17 00:20:09 CET 2013


Revision: 53863
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53863
Author:   campbellbarton
Date:     2013-01-16 23:20:09 +0000 (Wed, 16 Jan 2013)
Log Message:
-----------
minor speedup for dyntopo edge queue - replace iterator with while loop.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c

Modified: trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c	2013-01-16 23:12:43 UTC (rev 53862)
+++ trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c	2013-01-16 23:20:09 UTC (rev 53863)
@@ -505,36 +505,34 @@
 		edge_queue_insert(q, pool, e, len_sq);
 }
 
-static int long_edge_queue_face_add(EdgeQueue *q, BLI_mempool *pool,
-									BMFace *f)
+static void long_edge_queue_face_add(EdgeQueue *q, BLI_mempool *pool,
+                                     BMFace *f)
 {
-	BMIter bm_iter;
-	BMEdge *e;
-
 	if (edge_queue_tri_in_sphere(q, f)) {
+		BMLoop *l_iter;
+		BMLoop *l_first;
+
 		/* Check each edge of the face */
-		BM_ITER_ELEM (e, &bm_iter, f, BM_EDGES_OF_FACE) {
-			long_edge_queue_edge_add(q, pool, e);
-		}
+		l_iter = l_first = BM_FACE_FIRST_LOOP(f);
+		do {
+			long_edge_queue_edge_add(q, pool, l_iter->e);
+		} while ((l_iter = l_iter->next) != l_first);
 	}
-
-	return TRUE;
 }
 
-static int short_edge_queue_face_add(EdgeQueue *q, BLI_mempool *pool,
-									 BMFace *f)
+static void short_edge_queue_face_add(EdgeQueue *q, BLI_mempool *pool,
+                                      BMFace *f)
 {
-	BMIter bm_iter;
-	BMEdge *e;
-
 	if (edge_queue_tri_in_sphere(q, f)) {
+		BMLoop *l_iter;
+		BMLoop *l_first;
+
 		/* Check each edge of the face */
-		BM_ITER_ELEM (e, &bm_iter, f, BM_EDGES_OF_FACE) {
-			short_edge_queue_edge_add(q, pool, e);
-		}
+		l_iter = l_first = BM_FACE_FIRST_LOOP(f);
+		do {
+			short_edge_queue_edge_add(q, pool, l_iter->e);
+		} while ((l_iter = l_iter->next) != l_first);
 	}
-
-	return TRUE;
 }
 
 /* Create a priority queue containing vertex pairs connected by a long
@@ -814,7 +812,7 @@
 		BM_face_as_array_vert_tri(f_del, v_tri);
 
 		/* Check if any of the face's vertices are now unused, if so
-		   remove them from the PBVH */
+		 * remove them from the PBVH */
 		for (j = 0; j < 3; j++) {
 			if (v_tri[j] != v2 && BM_vert_face_count(v_tri[j]) == 1) {
 				BLI_ghash_insert(deleted_verts, v_tri[j], NULL);




More information about the Bf-blender-cvs mailing list