Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-09-02 17:32:02 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-09-02 17:35:22 +0300
commita3559a70dd57110fd4e1cc568928ee1e3504959a (patch)
tree8beced38137ff9a86aebb30c4848891695cc80ca /source
parent2356f60c6200188a2f88d6d890ff78fa8fd2b4d3 (diff)
Fix T69404: Merge by distance crash with Unselected
Error introduced when removing the automerge bmesh operator.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/include/ED_mesh.h8
-rw-r--r--source/blender/editors/mesh/editmesh_automerge.c11
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c7
-rw-r--r--source/blender/editors/transform/transform_conversions.c5
4 files changed, 13 insertions, 18 deletions
diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h
index f2ef3a60bc5..ee4798430ef 100644
--- a/source/blender/editors/include/ED_mesh.h
+++ b/source/blender/editors/include/ED_mesh.h
@@ -139,13 +139,13 @@ bool BMBVH_EdgeVisible(struct BMBVHTree *tree,
struct Object *obedit);
/* editmesh_automerge.c */
-void EDBM_automerge(struct Scene *scene, struct Object *ob, bool update, const char hflag);
-void EDBM_automerge_and_split(struct Scene *scene,
- struct Object *ob,
+void EDBM_automerge(struct Object *ob, bool update, const char hflag, const float dist);
+void EDBM_automerge_and_split(struct Object *ob,
bool split_edges,
bool split_faces,
bool update,
- const char hflag);
+ const char hflag,
+ const float dist);
/* editmesh_undo.c */
void ED_mesh_undosys_type(struct UndoType *ut);
diff --git a/source/blender/editors/mesh/editmesh_automerge.c b/source/blender/editors/mesh/editmesh_automerge.c
index 62f4fc6bb7d..82f53aafad8 100644
--- a/source/blender/editors/mesh/editmesh_automerge.c
+++ b/source/blender/editors/mesh/editmesh_automerge.c
@@ -54,7 +54,7 @@
* Used after transform operations.
* \{ */
-void EDBM_automerge(Scene *scene, Object *obedit, bool update, const char hflag)
+void EDBM_automerge(Object *obedit, bool update, const char hflag, const float dist)
{
BMEditMesh *em = BKE_editmesh_from_object(obedit);
BMesh *bm = em->bm;
@@ -69,7 +69,7 @@ void EDBM_automerge(Scene *scene, Object *obedit, bool update, const char hflag)
BMO_FLAG_DEFAULTS,
"find_doubles verts=%av keep_verts=%Hv dist=%f",
hflag,
- scene->toolsettings->doublimit);
+ dist);
BMO_op_exec(bm, &findop);
@@ -286,18 +286,17 @@ static int edbm_automerge_and_split_sort_cmp_by_keys_cb(const void *index1_v,
}
}
-void EDBM_automerge_and_split(Scene *scene,
- Object *obedit,
+void EDBM_automerge_and_split(Object *obedit,
bool split_edges,
bool split_faces,
bool update,
- const char hflag)
+ const char hflag,
+ const float dist)
{
bool ok = false;
BMEditMesh *em = BKE_editmesh_from_object(obedit);
BMesh *bm = em->bm;
- float dist = scene->toolsettings->doublimit;
BMOperator findop, weldop;
BMOpSlot *slot_targetmap;
BMIter iter;
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index b88b6cbb3a6..e5023068100 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -3131,12 +3131,7 @@ static int edbm_remove_doubles_exec(bContext *C, wmOperator *op)
BM_mesh_elem_hflag_enable_test(em->bm, htype_select, BM_ELEM_TAG, true, true, BM_ELEM_SELECT);
if (use_unselected) {
- EDBM_op_init(em, &bmop, op, "automerge verts=%hv dist=%f", BM_ELEM_SELECT, threshold);
- BMO_op_exec(em->bm, &bmop);
-
- if (!EDBM_op_finish(em, &bmop, op, true)) {
- continue;
- }
+ EDBM_automerge(obedit, false, BM_ELEM_SELECT, threshold);
}
else {
EDBM_op_init(em, &bmop, op, "find_doubles verts=%hv dist=%f", BM_ELEM_SELECT, threshold);
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 887d4bcf0e8..328cb1d1bbf 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -7128,10 +7128,11 @@ static void special_aftertrans_update__mesh(bContext *UNUSED(C), TransInfo *t)
if (t->scene->toolsettings->automerge & AUTO_MERGE) {
if (t->scene->toolsettings->automerge & AUTO_MERGE_AND_SPLIT) {
- EDBM_automerge_and_split(t->scene, tc->obedit, true, true, true, hflag);
+ EDBM_automerge_and_split(
+ tc->obedit, true, true, true, hflag, t->scene->toolsettings->doublimit);
}
else {
- EDBM_automerge(t->scene, tc->obedit, true, hflag);
+ EDBM_automerge(tc->obedit, true, hflag, t->scene->toolsettings->doublimit);
}
}