Commit: 4f28dac8722a213599add020d41cb04fe262dadf
Author: Campbell Barton
Date:   Wed Nov 9 00:04:58 2016 +1100
Branches: master
https://developer.blender.org/rB4f28dac8722a213599add020d41cb04fe262dadf

BMesh: remove edge search when flipping faces

Replace search with direct lookup.

===================================================================

M       source/blender/bmesh/intern/bmesh_core.c

===================================================================

diff --git a/source/blender/bmesh/intern/bmesh_core.c 
b/source/blender/bmesh/intern/bmesh_core.c
index c75e264..6abc52d 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -1045,9 +1045,9 @@ static bool bm_loop_reverse_loop(
 #endif
 
        const int len = f->len;
-       BMLoop *l_iter, *oldprev, *oldnext;
+       BMLoop *l_iter;
        BMEdge **edar = BLI_array_alloca(edar, len);
-       int i, j, edok;
+       int i;
 
        for (i = 0, l_iter = l_first; i < len; i++, l_iter = l_iter->next) {
                bmesh_radial_loop_remove((edar[i] = l_iter->e), l_iter);
@@ -1055,8 +1055,8 @@ static bool bm_loop_reverse_loop(
 
        /* actually reverse the loop */
        for (i = 0, l_iter = l_first; i < len; i++) {
-               oldnext = l_iter->next;
-               oldprev = l_iter->prev;
+               BMLoop *oldnext = l_iter->next;
+               BMLoop *oldprev = l_iter->prev;
                l_iter->next = oldprev;
                l_iter->prev = oldnext;
                l_iter = oldnext;
@@ -1067,26 +1067,12 @@ static bool bm_loop_reverse_loop(
                }
        }
 
-       if (len == 2) { /* two edged face */
-               /* do some verification here! */
-               l_first->e = edar[1];
-               l_first->next->e = edar[0];
-       }
-       else {
-               for (i = 0, l_iter = l_first; i < len; i++, l_iter = 
l_iter->next) {
-                       edok = 0;
-                       for (j = 0; j < len; j++) {
-                               edok = BM_verts_in_edge(l_iter->v, 
l_iter->next->v, edar[j]);
-                               if (edok) {
-                                       l_iter->e = edar[j];
-                                       break;
-                               }
-                       }
-               }
-       }
        /* rebuild radial */
-       for (i = 0, l_iter = l_first; i < len; i++, l_iter = l_iter->next)
+       for (i = 0, l_iter = l_first->prev; i < len; i++, l_iter = 
l_iter->prev) {
+               BLI_assert(BM_verts_in_edge(l_iter->v, l_iter->next->v, 
edar[i]));
+               l_iter->e = edar[i];
                bmesh_radial_loop_append(l_iter->e, l_iter);
+       }
 
 #ifndef NDEBUG
        /* validate radial */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to