Commit: 2883a48b3cf63dfec6235a18664e0bd8fb95b057
Author: Campbell Barton
Date:   Fri Jan 17 09:35:53 2014 +1100
https://developer.blender.org/rB2883a48b3cf63dfec6235a18664e0bd8fb95b057

BMesh: minor speedup for deleting faces. also remove unused delete-all

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

M       source/blender/bmesh/intern/bmesh_delete.c
M       source/blender/bmesh/intern/bmesh_operator_api.h

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

diff --git a/source/blender/bmesh/intern/bmesh_delete.c 
b/source/blender/bmesh/intern/bmesh_delete.c
index 45d95fc..2afcb09 100644
--- a/source/blender/bmesh/intern/bmesh_delete.c
+++ b/source/blender/bmesh/intern/bmesh_delete.c
@@ -203,21 +203,27 @@ void BMO_remove_tagged_context(BMesh *bm, const short 
oflag, const int type)
                        /* go through and mark all edges and all verts of all 
faces for delete */
                        BM_ITER_MESH (f, &fiter, bm, BM_FACES_OF_MESH) {
                                if (BMO_elem_flag_test(bm, f, oflag)) {
-                                       for (e = BM_iter_new(&eiter, bm, 
BM_EDGES_OF_FACE, f); e; e = BM_iter_step(&eiter))
-                                               BMO_elem_flag_enable(bm, e, 
oflag);
-                                       for (v = BM_iter_new(&viter, bm, 
BM_VERTS_OF_FACE, f); v; v = BM_iter_step(&viter))
-                                               BMO_elem_flag_enable(bm, v, 
oflag);
+                                       BMLoop *l_first = BM_FACE_FIRST_LOOP(f);
+                                       BMLoop *l_iter;
+
+                                       l_iter = l_first;
+                                       do {
+                                               BMO_elem_flag_enable(bm, 
l_iter->v, oflag);
+                                               BMO_elem_flag_enable(bm, 
l_iter->e, oflag);
+                                       } while ((l_iter = l_iter->next) != 
l_first);
                                }
                        }
                        /* now go through and mark all remaining faces all 
edges for keeping */
                        BM_ITER_MESH (f, &fiter, bm, BM_FACES_OF_MESH) {
                                if (!BMO_elem_flag_test(bm, f, oflag)) {
-                                       for (e = BM_iter_new(&eiter, bm, 
BM_EDGES_OF_FACE, f); e; e = BM_iter_step(&eiter)) {
-                                               BMO_elem_flag_disable(bm, e, 
oflag);
-                                       }
-                                       for (v = BM_iter_new(&viter, bm, 
BM_VERTS_OF_FACE, f); v; v = BM_iter_step(&viter)) {
-                                               BMO_elem_flag_disable(bm, v, 
oflag);
-                                       }
+                                       BMLoop *l_first = BM_FACE_FIRST_LOOP(f);
+                                       BMLoop *l_iter;
+
+                                       l_iter = l_first;
+                                       do {
+                                               BMO_elem_flag_disable(bm, 
l_iter->v, oflag);
+                                               BMO_elem_flag_disable(bm, 
l_iter->e, oflag);
+                                       } while ((l_iter = l_iter->next) != 
l_first);
                                }
                        }
                        /* also mark all the vertices of remaining edges for 
keeping */
@@ -236,24 +242,5 @@ void BMO_remove_tagged_context(BMesh *bm, const short 
oflag, const int type)
 
                        break;
                }
-               case DEL_ALL:
-               {
-                       /* does this option even belong in here? */
-                       BM_ITER_MESH (f, &fiter, bm, BM_FACES_OF_MESH) {
-                               BMO_elem_flag_enable(bm, f, oflag);
-                       }
-                       BM_ITER_MESH (e, &eiter, bm, BM_EDGES_OF_MESH) {
-                               BMO_elem_flag_enable(bm, e, oflag);
-                       }
-                       BM_ITER_MESH (v, &viter, bm, BM_VERTS_OF_MESH) {
-                               BMO_elem_flag_enable(bm, v, oflag);
-                       }
-
-                       BMO_remove_tagged_faces(bm, oflag);
-                       BMO_remove_tagged_edges(bm, oflag);
-                       BMO_remove_tagged_verts(bm, oflag);
-
-                       break;
-               }
        }
 }
diff --git a/source/blender/bmesh/intern/bmesh_operator_api.h 
b/source/blender/bmesh/intern/bmesh_operator_api.h
index 7de158f..7fad3a8 100644
--- a/source/blender/bmesh/intern/bmesh_operator_api.h
+++ b/source/blender/bmesh/intern/bmesh_operator_api.h
@@ -283,7 +283,6 @@ enum {
        DEL_ONLYFACES,
        DEL_EDGESFACES,
        DEL_FACES,
-       DEL_ALL,
        DEL_ONLYTAGGED
 };

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

Reply via email to