Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-09-12 08:53:49 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-09-12 08:53:49 +0400
commitbd5fdf63cbe49d8adebb33bf007789d9335c22ab (patch)
tree73f23a818b0688dfe0156ee50862b775ec1e5674 /source
parent0ee9075e48b04fc1569d770dc156dee7c840fcd3 (diff)
fix [#31456] Extreme lag editing meshes
running BM_CHECK_ELEMENT was taking over 75% of the time to subdivide a mesh, since this only reports errors, and is so slow - only run this on non-release builds.
Diffstat (limited to 'source')
-rw-r--r--source/blender/bmesh/intern/bmesh_core.c4
-rw-r--r--source/blender/bmesh/intern/bmesh_private.h14
2 files changed, 14 insertions, 4 deletions
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c
index 4d10ef317f3..f03ce9b8543 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -340,6 +340,8 @@ BMFace *BM_face_create(BMesh *bm, BMVert **verts, BMEdge **edges, const int len,
return f;
}
+#ifndef NDEBUG
+
/**
* Check the element is valid.
*
@@ -476,6 +478,8 @@ int bmesh_elem_check(void *element, const char htype)
return err;
}
+#endif /* NDEBUG */
+
/**
* low level function, only frees the vert,
* doesn't change or adjust surrounding geometry
diff --git a/source/blender/bmesh/intern/bmesh_private.h b/source/blender/bmesh/intern/bmesh_private.h
index 0827901f5c2..73370de8cee 100644
--- a/source/blender/bmesh/intern/bmesh_private.h
+++ b/source/blender/bmesh/intern/bmesh_private.h
@@ -37,15 +37,21 @@
*/
/* returns positive nonzero on error */
-int bmesh_elem_check(void *element, const char htype);
-#define BM_CHECK_ELEMENT(el) \
+#ifdef NDEBUG
+ /* no error checking for release,
+ * it can take most of the CPU time when running some tools */
+# define BM_CHECK_ELEMENT(el) (void)(el)
+#else
+int bmesh_elem_check(void *element, const char htype);
+# define BM_CHECK_ELEMENT(el) \
if (bmesh_elem_check(el, ((BMHeader *)el)->htype)) { \
printf("check_element failure, with code %i on line %i in file\n" \
" \"%s\"\n\n", \
- bmesh_elem_check(el, ((BMHeader *)el)->htype), \
+ bmesh_elem_check(el, ((BMHeader *)el)->htype), \
__LINE__, __FILE__); \
- }
+ } (void)0
+#endif
#define BM_DISK_EDGE_LINK_GET(e, v) ( \
((v) == ((BMEdge *)(e))->v1) ? \