[Bf-blender-cvs] [3b24eaa] master: Fix T37583: regression in bmesh triangulate breaking python's use of face_map
Campbell Barton
noreply at git.blender.org
Tue Nov 26 22:12:27 CET 2013
Commit: 3b24eaad9af8025cb38879cbc345f7debceba5a9
Author: Campbell Barton
Date: Wed Nov 27 08:08:00 2013 +1100
http://developer.blender.org/rB3b24eaad9af8025cb38879cbc345f7debceba5a9
Fix T37583: regression in bmesh triangulate breaking python's use of face_map
===================================================================
M source/blender/bmesh/intern/bmesh_core.c
M source/blender/bmesh/intern/bmesh_core.h
M source/blender/bmesh/intern/bmesh_polygon.c
===================================================================
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c
index 0726af4..a270830 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -2294,7 +2294,7 @@ BMVert *bmesh_urmv(BMesh *bm, BMFace *f_sep, BMVert *v_sep)
* low level function so both face pointers remain intact but point to swapped data.
* \note must be from the same bmesh.
*/
-void bmesh_face_swap_data(BMesh *bm, BMFace *f_a, BMFace *f_b)
+void bmesh_face_swap_data(BMFace *f_a, BMFace *f_b)
{
BMLoop *l_iter, *l_first;
@@ -2311,5 +2311,8 @@ void bmesh_face_swap_data(BMesh *bm, BMFace *f_a, BMFace *f_b)
} while ((l_iter = l_iter->next) != l_first);
SWAP(BMFace, (*f_a), (*f_b));
- bm->elem_index_dirty |= BM_FACE;
+
+ /* swap back */
+ SWAP(void *, f_a->head.data, f_b->head.data);
+ SWAP(int, f_a->head.index, f_b->head.index);
}
diff --git a/source/blender/bmesh/intern/bmesh_core.h b/source/blender/bmesh/intern/bmesh_core.h
index 9e33509..e9fd4e6 100644
--- a/source/blender/bmesh/intern/bmesh_core.h
+++ b/source/blender/bmesh/intern/bmesh_core.h
@@ -87,6 +87,6 @@ BMFace *bmesh_jfke(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e);
BMVert *bmesh_urmv(BMesh *bm, BMFace *f_sep, BMVert *v_sep);
BMVert *bmesh_urmv_loop(BMesh *bm, BMLoop *l_sep);
-void bmesh_face_swap_data(BMesh *bm, BMFace *f_a, BMFace *f_b);
+void bmesh_face_swap_data(BMFace *f_a, BMFace *f_b);
#endif /* __BMESH_CORE_H__ */
diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c
index 3db6ba0..341143e 100644
--- a/source/blender/bmesh/intern/bmesh_polygon.c
+++ b/source/blender/bmesh/intern/bmesh_polygon.c
@@ -1011,7 +1011,7 @@ void BM_face_triangulate(BMesh *bm, BMFace *f,
if ((!use_beauty) || (!r_faces_new)) {
/* we can't delete the real face, because some of the callers expect it to remain valid.
* so swap data and delete the last created tri */
- bmesh_face_swap_data(bm, f, f_new);
+ bmesh_face_swap_data(f, f_new);
BM_face_kill(bm, f_new);
}
@@ -1071,7 +1071,7 @@ void BM_face_triangulate(BMesh *bm, BMFace *f,
/* we can't delete the real face, because some of the callers expect it to remain valid.
* so swap data and delete the last created tri */
- bmesh_face_swap_data(bm, f, f_new);
+ bmesh_face_swap_data(f, f_new);
BM_face_kill(bm, f_new);
}
}
More information about the Bf-blender-cvs
mailing list