[Bf-blender-cvs] [8565b20] master: Fix for BM_mesh_deselect_flush(), allowed faces with deselected edges

Campbell Barton noreply at git.blender.org
Thu Feb 20 22:17:35 CET 2014


Commit: 8565b2042eeea65967a254b29fd9af52d508efc9
Author: Campbell Barton
Date:   Fri Feb 21 08:01:24 2014 +1100
https://developer.blender.org/rB8565b2042eeea65967a254b29fd9af52d508efc9

Fix for BM_mesh_deselect_flush(), allowed faces with deselected edges

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

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

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

diff --git a/source/blender/bmesh/intern/bmesh_marking.c b/source/blender/bmesh/intern/bmesh_marking.c
index 7750524..833a556 100644
--- a/source/blender/bmesh/intern/bmesh_marking.c
+++ b/source/blender/bmesh/intern/bmesh_marking.c
@@ -236,55 +236,30 @@ void BM_mesh_select_mode_flush(BMesh *bm)
  */
 void BM_mesh_deselect_flush(BMesh *bm)
 {
-	BMEdge *e;
-	BMLoop *l_iter;
-	BMLoop *l_first;
-	BMFace *f;
-
 	BMIter eiter;
-	BMIter fiter;
-
-	bool ok;
+	BMEdge *e;
 
-	/* we can use 2 sections here because the second loop isnt checking edge selection */
-#pragma omp parallel sections if (bm->totedge + bm->totface >= BM_OMP_LIMIT)
-	{
-#pragma omp section
-		{
-			BM_ITER_MESH (e, &eiter, bm, BM_EDGES_OF_MESH) {
-				if (!(BM_elem_flag_test(e->v1, BM_ELEM_SELECT) &&
-				      BM_elem_flag_test(e->v2, BM_ELEM_SELECT) &&
-				      !BM_elem_flag_test(e, BM_ELEM_HIDDEN)))
+	BM_ITER_MESH (e, &eiter, bm, BM_EDGES_OF_MESH) {
+		if (!BM_elem_flag_test(e, BM_ELEM_HIDDEN)) {
+			if (BM_elem_flag_test(e, BM_ELEM_SELECT)) {
+				if (!BM_elem_flag_test(e->v1, BM_ELEM_SELECT) ||
+				    !BM_elem_flag_test(e->v2, BM_ELEM_SELECT))
 				{
 					BM_elem_flag_disable(e, BM_ELEM_SELECT);
 				}
 			}
-		}
 
-#pragma omp section
-		{
-			BM_ITER_MESH (f, &fiter, bm, BM_FACES_OF_MESH) {
-				ok = true;
-				if (!BM_elem_flag_test(f, BM_ELEM_HIDDEN)) {
-					l_iter = l_first = BM_FACE_FIRST_LOOP(f);
-					do {
-						if (!BM_elem_flag_test(l_iter->v, BM_ELEM_SELECT)) {
-							ok = false;
-							break;
-						}
-					} while ((l_iter = l_iter->next) != l_first);
-				}
-				else {
-					ok = false;
-				}
+			if (e->l && !BM_elem_flag_test(e, BM_ELEM_SELECT)) {
+				BMLoop *l_iter;
+				BMLoop *l_first;
 
-				if (ok == false) {
-					BM_elem_flag_disable(f, BM_ELEM_SELECT);
-				}
+				l_iter = l_first = e->l;
+				do {
+					BM_elem_flag_disable(l_iter->f, BM_ELEM_SELECT);
+				} while ((l_iter = l_iter->radial_next) != l_first);
 			}
 		}
 	}
-	/* end sections */
 
 	/* Remove any deselected elements from the BMEditSelection */
 	BM_select_history_validate(bm);




More information about the Bf-blender-cvs mailing list