diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-04-16 10:48:57 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-04-16 10:48:57 +0400 |
commit | 0635f8101c98d74da729d464472a4d9efa09337f (patch) | |
tree | 2588585adbcd09b0e14497d12a8403488bfe2efb /source/blender/blenkernel/intern/editderivedmesh.c | |
parent | fb1e60762f3a4c32b3ae57824f5bcbb984b33cbc (diff) |
make scanfill threadsafe (wasnt threadsafe before BMesh merge but before the merge it didn't need to be) - now rendering uses its better if its threadsafe.
Diffstat (limited to 'source/blender/blenkernel/intern/editderivedmesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/editderivedmesh.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c index 75f6abc6c74..07a43db8560 100644 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@ -120,6 +120,8 @@ static void BMEdit_RecalcTessellation_intern(BMEditMesh *tm) BMLoop *l; int i = 0, j; + ScanFillContext sf_ctx; + #if 0 /* note, we could be clever and re-use this array but would need to ensure * its realloced at some point, for now just free it */ @@ -195,18 +197,18 @@ static void BMEdit_RecalcTessellation_intern(BMEditMesh *tm) ScanFillFace *efa; int totfilltri; - BLI_begin_edgefill(); + BLI_begin_edgefill(&sf_ctx); /*scanfill time*/ l = BM_iter_new(&liter, bm, BM_LOOPS_OF_FACE, f); for (j=0; l; l=BM_iter_step(&liter), j++) { /*mark order*/ BM_elem_index_set(l, j); /* set_loop */ - v = BLI_addfillvert(l->v->co); + v = BLI_addfillvert(&sf_ctx, l->v->co); v->tmp.p = l; if (lastv) { - /* e = */ BLI_addfilledge(lastv, v); + /* e = */ BLI_addfilledge(&sf_ctx, lastv, v); } lastv = v; @@ -214,12 +216,12 @@ static void BMEdit_RecalcTessellation_intern(BMEditMesh *tm) } /*complete the loop*/ - BLI_addfilledge(firstv, v); + BLI_addfilledge(&sf_ctx, firstv, v); - totfilltri = BLI_edgefill(FALSE); + totfilltri = BLI_edgefill(&sf_ctx, FALSE); BLI_array_growitems(looptris, totfilltri); - for (efa = fillfacebase.first; efa; efa=efa->next) { + for (efa = sf_ctx.fillfacebase.first; efa; efa=efa->next) { BMLoop *l1= efa->v1->tmp.p; BMLoop *l2= efa->v2->tmp.p; BMLoop *l3= efa->v3->tmp.p; @@ -234,7 +236,7 @@ static void BMEdit_RecalcTessellation_intern(BMEditMesh *tm) i += 1; } - BLI_end_edgefill(); + BLI_end_edgefill(&sf_ctx); } } |