diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-11-12 09:53:43 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-11-12 09:53:43 +0400 |
commit | 0bfc92ff8e16c76b8a01ace39f3e98b2beeda795 (patch) | |
tree | 08195a32c602cd6dab54edd7d0b7cae5f374d118 /source/blender/bmesh/operators/bmo_bevel.c | |
parent | 428e5b7a99eeae77caccbabbf32a7e596d0907d7 (diff) |
BM_iter_as_arrayN() can now take an optional existing array argument, useful to avoid many small malloc's by passing a fixes size stack variable instead.
Will give some speedup to edge-split modifier and bevel.
Diffstat (limited to 'source/blender/bmesh/operators/bmo_bevel.c')
-rw-r--r-- | source/blender/bmesh/operators/bmo_bevel.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/bmesh/operators/bmo_bevel.c b/source/blender/bmesh/operators/bmo_bevel.c index 7fededd0635..e18920fc98e 100644 --- a/source/blender/bmesh/operators/bmo_bevel.c +++ b/source/blender/bmesh/operators/bmo_bevel.c @@ -1265,8 +1265,10 @@ static void rebuild_polygon(BMesh *bm, BevelParams *bp, BMFace *f) /* All polygons touching v need rebuilding because beveling v has made new vertices */ static void bevel_rebuild_existing_polygons(BMesh *bm, BevelParams *bp, BMVert *v) { + void *faces_stack[BM_DEFAULT_ITER_STACK_SIZE]; int faces_len, f_index; - BMFace **faces = BM_iter_as_arrayN(bm, BM_FACES_OF_VERT, v, &faces_len); + BMFace **faces = BM_iter_as_arrayN(bm, BM_FACES_OF_VERT, v, &faces_len, + faces_stack, BM_DEFAULT_ITER_STACK_SIZE); if (LIKELY(faces != NULL)) { for (f_index = 0; f_index < faces_len; f_index++) { @@ -1275,7 +1277,9 @@ static void bevel_rebuild_existing_polygons(BMesh *bm, BevelParams *bp, BMVert * BM_face_kill(bm, f); } - MEM_freeN(faces); + if (faces != (BMFace **)faces_stack) { + MEM_freeN(faces); + } } } |