Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-01-17 03:20:09 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-01-17 03:20:09 +0400
commit93b58752d2795f870ddd2078db21c6cbe38e5b70 (patch)
tree1752550b96defbe53a61c82d5debcaba7dd3a76b /source/blender/blenkernel/intern/pbvh_bmesh.c
parentd6c4d2a4155e8293894d9dfaf51c7e4e08a7c6d5 (diff)
minor speedup for dyntopo edge queue - replace iterator with while loop.
Diffstat (limited to 'source/blender/blenkernel/intern/pbvh_bmesh.c')
-rw-r--r--source/blender/blenkernel/intern/pbvh_bmesh.c40
1 files changed, 19 insertions, 21 deletions
diff --git a/source/blender/blenkernel/intern/pbvh_bmesh.c b/source/blender/blenkernel/intern/pbvh_bmesh.c
index ce6f3ddb9b3..7ffadde2f08 100644
--- a/source/blender/blenkernel/intern/pbvh_bmesh.c
+++ b/source/blender/blenkernel/intern/pbvh_bmesh.c
@@ -505,36 +505,34 @@ static void short_edge_queue_edge_add(EdgeQueue *q, BLI_mempool *pool,
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 @@ static void pbvh_bmesh_collapse_edge(PBVH *bvh, BMEdge *e, BMVert *v1,
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);