[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50543] trunk/blender/source/blender/bmesh /intern: fix [#31456] Extreme lag editing meshes
Campbell Barton
ideasman42 at gmail.com
Wed Sep 12 06:53:49 CEST 2012
Revision: 50543
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50543
Author: campbellbarton
Date: 2012-09-12 04:53:49 +0000 (Wed, 12 Sep 2012)
Log Message:
-----------
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.
Modified Paths:
--------------
trunk/blender/source/blender/bmesh/intern/bmesh_core.c
trunk/blender/source/blender/bmesh/intern/bmesh_private.h
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_core.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_core.c 2012-09-12 03:11:29 UTC (rev 50542)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_core.c 2012-09-12 04:53:49 UTC (rev 50543)
@@ -340,6 +340,8 @@
return f;
}
+#ifndef NDEBUG
+
/**
* Check the element is valid.
*
@@ -476,6 +478,8 @@
return err;
}
+#endif /* NDEBUG */
+
/**
* low level function, only frees the vert,
* doesn't change or adjust surrounding geometry
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_private.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_private.h 2012-09-12 03:11:29 UTC (rev 50542)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_private.h 2012-09-12 04:53:49 UTC (rev 50543)
@@ -37,15 +37,21 @@
*/
/* returns positive nonzero on error */
+
+#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) \
+# 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) ? \
More information about the Bf-blender-cvs
mailing list