From 19e627cab34a04a3d01b2e3a868b7bf91d56e8f9 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 18 Mar 2014 18:54:41 +0600 Subject: Backport revisions for the final 2.70 release e6a359a, 9437927, a205700, d908c90, a6e3471, deef641, 4080673, 0141265, 0c6e744, f959e3d, ade6646, caf5d90, 5febb09, d08e6ab, 22873ea, 3d031d1, c450ea2, 60cab47, ed26edb, df25dbf, f127f49. --- source/blender/bmesh/operators/bmo_connect.c | 3 ++- source/blender/bmesh/operators/bmo_subdivide.c | 2 +- source/blender/bmesh/tools/bmesh_bisect_plane.c | 4 +--- source/blender/bmesh/tools/bmesh_path.c | 8 ++++++++ 4 files changed, 12 insertions(+), 5 deletions(-) (limited to 'source/blender/bmesh') diff --git a/source/blender/bmesh/operators/bmo_connect.c b/source/blender/bmesh/operators/bmo_connect.c index 3d2c8c3d020..6e2bc0d0edf 100644 --- a/source/blender/bmesh/operators/bmo_connect.c +++ b/source/blender/bmesh/operators/bmo_connect.c @@ -48,7 +48,7 @@ static int bm_face_connect_verts(BMesh *bm, BMFace *f) BMIter liter; BMFace *f_new; - BMLoop *l, *l_new; + BMLoop *l; BMLoop *l_last; unsigned int i; @@ -96,6 +96,7 @@ static int bm_face_connect_verts(BMesh *bm, BMFace *f) } for (i = 0; i < STACK_SIZE(verts_pair); i++) { + BMLoop *l_new; BMLoop *l_a, *l_b; if ((l_a = BM_face_vert_share_loop(f, verts_pair[i][0])) && diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c index 723595771a1..1e93340d8a3 100644 --- a/source/blender/bmesh/operators/bmo_subdivide.c +++ b/source/blender/bmesh/operators/bmo_subdivide.c @@ -135,7 +135,6 @@ typedef struct SubDPattern { * edge subdivision */ static BMEdge *connect_smallest_face(BMesh *bm, BMVert *v_a, BMVert *v_b, BMFace **r_f_new) { - BMLoop *l_new; BMLoop *l_a, *l_b; BMFace *f; @@ -146,6 +145,7 @@ static BMEdge *connect_smallest_face(BMesh *bm, BMVert *v_a, BMVert *v_b, BMFace if (f) { BMFace *f_new; + BMLoop *l_new; f_new = BM_face_split(bm, f, l_a, l_b, &l_new, NULL, false); diff --git a/source/blender/bmesh/tools/bmesh_bisect_plane.c b/source/blender/bmesh/tools/bmesh_bisect_plane.c index 7a33dc40f8e..f4318933deb 100644 --- a/source/blender/bmesh/tools/bmesh_bisect_plane.c +++ b/source/blender/bmesh/tools/bmesh_bisect_plane.c @@ -136,16 +136,14 @@ static void bm_face_bisect_verts(BMesh *bm, BMFace *f, const float plane[4], con if ((STACK_SIZE(vert_split_arr) > 1) && (use_dirs[0] && use_dirs[2])) { - BMLoop *l_new; - if (LIKELY(STACK_SIZE(vert_split_arr) == 2)) { + BMLoop *l_new; BMLoop *l_a, *l_b; l_a = BM_face_vert_share_loop(f, vert_split_arr[0]); l_b = BM_face_vert_share_loop(f, vert_split_arr[1]); /* common case, just cut the face once */ - l_new = NULL; BM_face_split(bm, f, l_a, l_b, &l_new, NULL, true); if (l_new) { if (oflag_center) { diff --git a/source/blender/bmesh/tools/bmesh_path.c b/source/blender/bmesh/tools/bmesh_path.c index 9fc1996e51a..060d0dd969b 100644 --- a/source/blender/bmesh/tools/bmesh_path.c +++ b/source/blender/bmesh/tools/bmesh_path.c @@ -193,6 +193,14 @@ static void edgetag_add_adjacent(Heap *heap, BMEdge *e1, BMEdge **edges_prev, fl const int e1_index = BM_elem_index_get(e1); BM_ITER_ELEM (v, &viter, e1, BM_VERTS_OF_EDGE) { + + /* don't walk over previous vertex */ + if ((edges_prev[e1_index]) && + (BM_vert_in_edge(edges_prev[e1_index], v))) + { + continue; + } + BM_ITER_ELEM (e2, &eiter, v, BM_EDGES_OF_VERT) { if (!BM_elem_flag_test(e2, BM_ELEM_TAG)) { /* we know 'e2' is not visited, check it out! */ -- cgit v1.2.3