diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-09-24 07:31:00 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-09-24 07:31:00 +0400 |
commit | 5342d57a5eb8f45549bcca81db611ac75188b060 (patch) | |
tree | 049a354eee6407512a44e5694a127155858bcd85 /source/blender/bmesh | |
parent | 464e9b8777134ef18d78d4605ec50d030c9a0df8 (diff) |
allocate bmesh data from known sizes where possible (was still using defaults in places),
add macros for initializing BMAllocTemplate's, also add assert on invalid use of bmesh_sfme()
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_construct.c | 5 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_core.c | 1 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_mesh.h | 7 |
3 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/bmesh/intern/bmesh_construct.c b/source/blender/bmesh/intern/bmesh_construct.c index 60d9b62d6b9..930964667e9 100644 --- a/source/blender/bmesh/intern/bmesh_construct.c +++ b/source/blender/bmesh/intern/bmesh_construct.c @@ -911,10 +911,7 @@ BMesh *BM_mesh_copy(BMesh *bm_old) BMEditSelection *ese; BMIter iter; int i; - const BMAllocTemplate allocsize = {bm_old->totvert, - bm_old->totedge, - bm_old->totloop, - bm_old->totface}; + const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_BM(bm_old); /* allocate a bmesh */ bm_new = BM_mesh_create(&allocsize); diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index 34e11f5c9f9..164a92125cd 100644 --- a/source/blender/bmesh/intern/bmesh_core.c +++ b/source/blender/bmesh/intern/bmesh_core.c @@ -1278,6 +1278,7 @@ BMFace *bmesh_sfme(BMesh *bm, BMFace *f, BMVert *v1, BMVert *v2, } if (!l_v1 || !l_v2) { + BLI_assert(0); return NULL; } diff --git a/source/blender/bmesh/intern/bmesh_mesh.h b/source/blender/bmesh/intern/bmesh_mesh.h index efcd80b374b..583b1589290 100644 --- a/source/blender/bmesh/intern/bmesh_mesh.h +++ b/source/blender/bmesh/intern/bmesh_mesh.h @@ -60,6 +60,13 @@ typedef struct BMAllocTemplate { extern const BMAllocTemplate bm_mesh_allocsize_default; extern const BMAllocTemplate bm_mesh_chunksize_default; +#define BMALLOC_TEMPLATE_FROM_BM(bm) { (CHECK_TYPE_INLINE(bm, BMesh *), \ + (bm)->totvert), (bm)->totedge, (bm)->totloop, (bm)->totface} +#define BMALLOC_TEMPLATE_FROM_ME(me) { (CHECK_TYPE_INLINE(me, Mesh *), \ + (me)->totvert), (me)->totedge, (me)->totloop, (me)->totpoly} +#define BMALLOC_TEMPLATE_FROM_DM(dm) { (CHECK_TYPE_INLINE(dm, DerivedMesh *), \ + (dm)->getNumVerts(dm)), (dm)->getNumEdges(dm), (dm)->getNumLoops(dm), (dm)->getNumPolys(dm)} + enum { BM_MESH_CREATE_USE_TOOLFLAGS = (1 << 0) }; |