[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55200] trunk/blender/source/blender/bmesh /operators/bmo_dissolve.c: bmesh: dissolve, avoid unnecessary loop in test_extra_verts(), also minor code cleanup.

Campbell Barton ideasman42 at gmail.com
Tue Mar 12 06:48:31 CET 2013


Revision: 55200
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55200
Author:   campbellbarton
Date:     2013-03-12 05:48:30 +0000 (Tue, 12 Mar 2013)
Log Message:
-----------
bmesh: dissolve, avoid unnecessary loop in test_extra_verts(), also minor code cleanup.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_dissolve.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_dissolve.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_dissolve.c	2013-03-12 05:36:43 UTC (rev 55199)
+++ trunk/blender/source/blender/bmesh/operators/bmo_dissolve.c	2013-03-12 05:48:30 UTC (rev 55200)
@@ -75,7 +75,7 @@
 void bmo_dissolve_faces_exec(BMesh *bm, BMOperator *op)
 {
 	BMOIter oiter;
-	BMFace *f, *f2 /* , *nf = NULL */;
+	BMFace *f;
 	BLI_array_declare(faces);
 	BLI_array_declare(regions);
 	BMFace ***regions = NULL;
@@ -101,7 +101,7 @@
 	
 	/* collect region */
 	BMO_ITER (f, &oiter, op->slots_in, "faces", BM_FACE) {
-
+		BMFace *f_iter;
 		if (!BMO_elem_flag_test(bm, f, FACE_MARK)) {
 			continue;
 		}
@@ -114,15 +114,15 @@
 		         BMW_FLAG_NOP, /* no need to check BMW_FLAG_TEST_HIDDEN, faces are already marked by the bmo */
 		         BMW_NIL_LAY);
 
-		for (f2 = BMW_begin(&regwalker, f); f2; f2 = BMW_step(&regwalker)) {
-			BLI_array_append(faces, f2);
+		for (f_iter = BMW_begin(&regwalker, f); f_iter; f_iter = BMW_step(&regwalker)) {
+			BLI_array_append(faces, f_iter);
 		}
 		BMW_end(&regwalker);
 		
 		for (i = 0; i < BLI_array_count(faces); i++) {
-			f2 = faces[i];
-			BMO_elem_flag_disable(bm, f2, FACE_MARK);
-			BMO_elem_flag_enable(bm, f2, FACE_ORIG);
+			f_iter = faces[i];
+			BMO_elem_flag_disable(bm, f_iter, FACE_MARK);
+			BMO_elem_flag_enable(bm, f_iter, FACE_ORIG);
 		}
 
 		if (BMO_error_occurred(bm)) {
@@ -312,34 +312,32 @@
 
 static bool test_extra_verts(BMesh *bm, BMVert *v)
 {
-	BMIter iter, liter, iter2, iter3;
-	BMFace *f, *f2;
+	BMIter fiter, liter, eiter, fiter_sub;
+	BMFace *f;
 	BMLoop *l;
 	BMEdge *e;
-	bool found;
 
 	/* test faces around verts for verts that would be wrongly killed
 	 * by dissolve faces. */
-	f = BM_iter_new(&iter, bm, BM_FACES_OF_VERT, v);
-	for ( ; f; f = BM_iter_step(&iter)) {
-		l = BM_iter_new(&liter, bm, BM_LOOPS_OF_FACE, f);
-		for ( ; l; l = BM_iter_step(&liter)) {
+	BM_ITER_ELEM(f, &fiter, v, BM_FACES_OF_VERT) {
+		BM_ITER_ELEM(l, &liter, f, BM_LOOPS_OF_FACE) {
 			if (!BMO_elem_flag_test(bm, l->v, VERT_MARK)) {
 				/* if an edge around a vert is a boundary edge,
 				 * then dissolve faces won't destroy it.
 				 * also if it forms a boundary with one
 				 * of the face region */
-				found = false;
-				e = BM_iter_new(&iter2, bm, BM_EDGES_OF_VERT, l->v);
-				for ( ; e; e = BM_iter_step(&iter2)) {
+				bool found = false;
+				BM_ITER_ELEM(e, &eiter, l->v, BM_EDGES_OF_VERT) {
+					BMFace *f_iter;
 					if (BM_edge_is_boundary(e)) {
 						found = true;
 					}
-					f2 = BM_iter_new(&iter3, bm, BM_FACES_OF_EDGE, e);
-					for ( ; f2; f2 = BM_iter_step(&iter3)) {
-						if (!BMO_elem_flag_test(bm, f2, FACE_MARK)) {
-							found = true;
-							break;
+					else {
+						BM_ITER_ELEM(f_iter, &fiter_sub, e, BM_FACES_OF_EDGE) {
+							if (!BMO_elem_flag_test(bm, f_iter, FACE_MARK)) {
+								found = true;
+								break;
+							}
 						}
 					}
 					if (found == true) {




More information about the Bf-blender-cvs mailing list