[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