Correct last commit

VERT_VISIT was used in a nested function.
This commit is contained in:
Campbell Barton 2017-05-18 21:48:52 +10:00
parent 32c9d2322c
commit 1247f609d4
Notes: blender-bot 2023-02-14 07:22:19 +01:00
Referenced by issue #50165, Bmesh booleans fail on simple cube array
1 changed files with 9 additions and 8 deletions

View File

@ -62,6 +62,7 @@
#define EDGE_NET _FLAG_WALK
/* tag verts we've visit */
#define VERT_VISIT _FLAG_WALK
#define VERT_IN_QUEUE _FLAG_WALK_ALT
struct VertOrder {
float angle;
@ -512,7 +513,7 @@ bool BM_face_split_edgenet(
} while ((l_iter = l_iter->next) != l_first);
#endif
/* Note: 'VERT_VISIT' is often not needed at all,
/* Note: 'VERT_IN_QUEUE' is often not needed at all,
* however in rare cases verts are added multiple times to the queue,
* that on it's own is harmless but in _very_ rare cases,
* the queue will overflow its maximum size,
@ -520,13 +521,13 @@ bool BM_face_split_edgenet(
for (i = 0; i < edge_net_len; i++) {
BM_ELEM_API_FLAG_ENABLE(edge_net[i], EDGE_NET);
BM_ELEM_API_FLAG_DISABLE(edge_net[i]->v1, VERT_VISIT);
BM_ELEM_API_FLAG_DISABLE(edge_net[i]->v2, VERT_VISIT);
BM_ELEM_API_FLAG_DISABLE(edge_net[i]->v1, VERT_IN_QUEUE);
BM_ELEM_API_FLAG_DISABLE(edge_net[i]->v2, VERT_IN_QUEUE);
}
l_iter = l_first = BM_FACE_FIRST_LOOP(f);
do {
BM_ELEM_API_FLAG_ENABLE(l_iter->e, EDGE_NET);
BM_ELEM_API_FLAG_DISABLE(l_iter->v, VERT_VISIT);
BM_ELEM_API_FLAG_DISABLE(l_iter->v, VERT_IN_QUEUE);
} while ((l_iter = l_iter->next) != l_first);
float face_normal_matrix[3][3];
@ -535,10 +536,10 @@ bool BM_face_split_edgenet(
/* any vert can be used to begin with */
STACK_PUSH(vert_queue, l_first->v);
BM_ELEM_API_FLAG_ENABLE(l_first->v, VERT_VISIT);
BM_ELEM_API_FLAG_ENABLE(l_first->v, VERT_IN_QUEUE);
while ((v = STACK_POP(vert_queue))) {
BM_ELEM_API_FLAG_DISABLE(v, VERT_VISIT);
BM_ELEM_API_FLAG_DISABLE(v, VERT_IN_QUEUE);
if (bm_face_split_edgenet_find_loop(
v, f->no, face_normal_matrix,
edge_order, edge_order_len, face_verts, &face_verts_len))
@ -569,11 +570,11 @@ bool BM_face_split_edgenet(
l_iter = l_first = BM_FACE_FIRST_LOOP(f_new);
do {
/* Avoid adding to queue multiple times (not common but happens). */
if (BM_ELEM_API_FLAG_TEST(l_iter->v, VERT_VISIT) &&
if (!BM_ELEM_API_FLAG_TEST(l_iter->v, VERT_IN_QUEUE) &&
bm_face_split_edgenet_find_loop_pair_exists(l_iter->v))
{
STACK_PUSH(vert_queue, l_iter->v);
BM_ELEM_API_FLAG_ENABLE(l_iter->v, VERT_VISIT);
BM_ELEM_API_FLAG_ENABLE(l_iter->v, VERT_IN_QUEUE);
}
} while ((l_iter = l_iter->next) != l_first);
}