diff --git a/source/blender/bmesh/bmesh_walkers.h b/source/blender/bmesh/bmesh_walkers.h index e7ab636f361..9ed17121920 100644 --- a/source/blender/bmesh/bmesh_walkers.h +++ b/source/blender/bmesh/bmesh_walkers.h @@ -19,19 +19,19 @@ typedef struct BMWalker { void *(*yield)(struct BMWalker *walker); int structsize; BMWOrder order; - int flag; + int layer; BMesh *bm; BLI_mempool *worklist; ListBase states; - int restrictflag; + short restrictflag; GHash *visithash; int depth; } BMWalker; /*initialize a walker. searchmask restricts some (not all) walkers to elements with a specific tool flag set. flags is specific to each walker.*/ -void BMW_Init(struct BMWalker *walker, BMesh *bm, int type, int searchmask, int flags); +void BMW_Init(struct BMWalker *walker, BMesh *bm, int type, short searchmask, int layer); void *BMW_Begin(BMWalker *walker, void *start); void *BMW_Step(struct BMWalker *walker); void BMW_End(struct BMWalker *walker); @@ -91,4 +91,7 @@ enum { BMW_MAXWALKERS }; +/* use with BMW_Init, so as not to confuse with restrict flags */ +#define BMW_NIL_LAY 0 + #endif diff --git a/source/blender/bmesh/intern/bmesh_walkers.c b/source/blender/bmesh/intern/bmesh_walkers.c index 1bb71c50dd0..adfe64c6dd9 100644 --- a/source/blender/bmesh/intern/bmesh_walkers.c +++ b/source/blender/bmesh/intern/bmesh_walkers.c @@ -83,18 +83,18 @@ void *BMW_Begin(BMWalker *walker, void *start) * */ -void BMW_Init(BMWalker *walker, BMesh *bm, int type, int searchmask, int flag) +void BMW_Init(BMWalker *walker, BMesh *bm, int type, short searchmask, int layer) { memset(walker, 0, sizeof(BMWalker)); - walker->flag = flag; + walker->layer = layer; walker->bm = bm; walker->restrictflag = searchmask; walker->visithash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "bmesh walkers 1"); if (type >= BMW_MAXWALKERS || type < 0) { bmesh_error(); - fprintf(stderr, "Invalid walker type in BMW_Init; type: %d, searchmask: %d, flag: %d\n", type, searchmask, flag); + fprintf(stderr, "Invalid walker type in BMW_Init; type: %d, searchmask: %d, flag: %d\n", type, searchmask, layer); } if (type != BMW_CUSTOM) { diff --git a/source/blender/bmesh/intern/bmesh_walkers_impl.c b/source/blender/bmesh/intern/bmesh_walkers_impl.c index a85b6e376f0..45b4e8c5ffd 100644 --- a/source/blender/bmesh/intern/bmesh_walkers_impl.c +++ b/source/blender/bmesh/intern/bmesh_walkers_impl.c @@ -761,7 +761,7 @@ static void *uvedgeWalker_step(BMWalker *walker) l = lwalk->l; nl = l->next; - type = walker->bm->ldata.layers[walker->flag].type; + type = walker->bm->ldata.layers[walker->layer].type; BMW_removestate(walker); @@ -773,8 +773,8 @@ static void *uvedgeWalker_step(BMWalker *walker) for (i=0; i<2; i++) { cl = i ? nl : l; BM_ITER(l2, &liter, walker->bm, BM_LOOPS_OF_VERT, cl->v) { - d1 = CustomData_bmesh_get_layer_n(&walker->bm->ldata, - cl->head.data, walker->flag); + d1 = CustomData_bmesh_get_layer_n(&walker->bm->ldata, + cl->head.data, walker->layer); rlen = BM_Edge_FaceCount(l2->e); for (j=0; jv != cl->v ? l2->next : l2; d2 = CustomData_bmesh_get_layer_n(&walker->bm->ldata, - l3->head.data, walker->flag); + l3->head.data, walker->layer); if (!CustomData_data_equals(type, d1, d2)) continue; diff --git a/source/blender/bmesh/operators/dissolveops.c b/source/blender/bmesh/operators/dissolveops.c index 9e0d9fe17f6..6e61956f6ef 100644 --- a/source/blender/bmesh/operators/dissolveops.c +++ b/source/blender/bmesh/operators/dissolveops.c @@ -28,7 +28,7 @@ static int UNUSED_FUNCTION(check_hole_in_region)(BMesh *bm, BMFace *f) /*checks if there are any unmarked boundary edges in the face region*/ - BMW_Init(®walker, bm, BMW_ISLAND, FACE_MARK, 0); + BMW_Init(®walker, bm, BMW_ISLAND, FACE_MARK, BMW_NIL_LAY); f2 = BMW_Begin(®walker, f); for (; f2; f2=BMW_Step(®walker)) { l2 = BMIter_New(&liter2, bm, BM_LOOPS_OF_FACE, f2); @@ -69,7 +69,7 @@ void dissolvefaces_exec(BMesh *bm, BMOperator *op) faces = NULL; /*forces different allocation*/ /*yay, walk!*/ - BMW_Init(®walker, bm, BMW_ISLAND, FACE_MARK, 0); + BMW_Init(®walker, bm, BMW_ISLAND, FACE_MARK, BMW_NIL_LAY); f2 = BMW_Begin(®walker, f); for (; f2; f2=BMW_Step(®walker)) { BLI_array_append(faces, f2); diff --git a/source/blender/bmesh/operators/removedoubles.c b/source/blender/bmesh/operators/removedoubles.c index c4352d6bf56..c7a38c94c45 100644 --- a/source/blender/bmesh/operators/removedoubles.c +++ b/source/blender/bmesh/operators/removedoubles.c @@ -347,7 +347,7 @@ void bmesh_collapse_exec(BMesh *bm, BMOperator *op) BMO_Init_Op(bm, &weldop, "weldverts"); BMO_Flag_Buffer(bm, op, "edges", EDGE_MARK, BM_EDGE); - BMW_Init(&walker, bm, BMW_SHELL, EDGE_MARK, 0); + BMW_Init(&walker, bm, BMW_SHELL, EDGE_MARK, BMW_NIL_LAY); BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) { if (!BMO_TestFlag(bm, e, EDGE_MARK)) diff --git a/source/blender/editors/mesh/bmesh_select.c b/source/blender/editors/mesh/bmesh_select.c index 584b6dd5f82..d583f505a46 100644 --- a/source/blender/editors/mesh/bmesh_select.c +++ b/source/blender/editors/mesh/bmesh_select.c @@ -885,7 +885,7 @@ static void walker_select(BMEditMesh *em, int walkercode, void *start, int selec BMHeader *h; BMWalker walker; - BMW_Init(&walker, bm, walkercode, 0, 0); + BMW_Init(&walker, bm, walkercode, 0, BMW_NIL_LAY); h = BMW_Begin(&walker, start); for (; h; h=BMW_Step(&walker)) { if (!select) @@ -1770,7 +1770,7 @@ static int select_linked_pick_invoke(bContext *C, wmOperator *op, wmEvent *event eed = eve->e; } - BMW_Init(&walker, em->bm, BMW_SHELL, 0, 0); + BMW_Init(&walker, em->bm, BMW_SHELL, 0, BMW_NIL_LAY); e = BMW_Begin(&walker, eed->v1); for (; e; e=BMW_Step(&walker)) { BM_Select(em->bm, e->v1, sel); @@ -1822,7 +1822,7 @@ static int select_linked_exec(bContext *C, wmOperator *UNUSED(op)) } } - BMW_Init(&walker, em->bm, BMW_SHELL, 0, 0); + BMW_Init(&walker, em->bm, BMW_SHELL, 0, BMW_NIL_LAY); for (i=0; ibm, BMW_UVISLAND, 0); + BMW_Init(&walker, em->bm, BMW_UVISLAND, BMW_NIL_LAY); BM_ITER(f, &iter, em->bm, BM_FACES_OF_MESH, NULL) { BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, f) { @@ -3330,7 +3330,7 @@ static int mesh_separate_loose(Main *bmain, Scene *scene, Base *editbase, wmOper /*Walk from the single vertex, selecting everything connected to it*/ - BMW_Init(&walker, bm, BMW_SHELL, 0, 0); + BMW_Init(&walker, bm, BMW_SHELL, 0, BMW_NIL_LAY); e = BMW_Begin(&walker, v_seed); for (; e; e=BMW_Step(&walker)) { BM_Select(bm, e->v1, 1); diff --git a/source/blender/editors/mesh/loopcut.c b/source/blender/editors/mesh/loopcut.c index a6f71d9ec9f..c3797962f0b 100644 --- a/source/blender/editors/mesh/loopcut.c +++ b/source/blender/editors/mesh/loopcut.c @@ -204,7 +204,7 @@ static void edgering_sel(tringselOpData *lcd, int previewlines, int select) } if (select) { - BMW_Init(&walker, em->bm, BMW_EDGERING, 0, 0); + BMW_Init(&walker, em->bm, BMW_EDGERING, 0, BMW_NIL_LAY); eed = BMW_Begin(&walker, startedge); for (; eed; eed=BMW_Step(&walker)) { BM_Select(em->bm, eed, 1); @@ -214,7 +214,7 @@ static void edgering_sel(tringselOpData *lcd, int previewlines, int select) return; } - BMW_Init(&walker, em->bm, BMW_EDGERING, 0, 0); + BMW_Init(&walker, em->bm, BMW_EDGERING, 0, BMW_NIL_LAY); eed = startedge = BMW_Begin(&walker, startedge); lastv1 = NULL; for (lasteed=NULL; eed; eed=BMW_Step(&walker)) {