mesa: don't call getenv every time _mesa_error is called
authorKeith Whitwell <keithw@vmware.com>
Tue, 14 Jul 2009 15:23:04 +0000 (16:23 +0100)
committerKeith Whitwell <keithw@vmware.com>
Wed, 15 Jul 2009 12:31:50 +0000 (13:31 +0100)
Buggy apps can generate thousands of mesa_error calls.  Don't need
to keep calling getenv to retreive the same MESA_DEBUG string each
time.

src/mesa/main/imports.c

index 3fb67083a2dffee43a71dbc45cf4eb48764013ea..b0e7d9d4835bf59b195589d9f6e959663f30c990 100644 (file)
@@ -1081,22 +1081,25 @@ _mesa_problem( const GLcontext *ctx, const char *fmtString, ... )
 void
 _mesa_error( GLcontext *ctx, GLenum error, const char *fmtString, ... )
 {
-   const char *debugEnv;
-   GLboolean debug;
+   static GLint debug = -1;
 
-   debugEnv = _mesa_getenv("MESA_DEBUG");
+   /* Check debug environment variable only once:
+    */
+   if (debug == -1) {
+      const char *debugEnv = _mesa_getenv("MESA_DEBUG");
 
 #ifdef DEBUG
-   if (debugEnv && _mesa_strstr(debugEnv, "silent"))
-      debug = GL_FALSE;
-   else
-      debug = GL_TRUE;
+      if (debugEnv && _mesa_strstr(debugEnv, "silent"))
+         debug = GL_FALSE;
+      else
+         debug = GL_TRUE;
 #else
-   if (debugEnv)
-      debug = GL_TRUE;
-   else
-      debug = GL_FALSE;
+      if (debugEnv)
+         debug = GL_TRUE;
+      else
+         debug = GL_FALSE;
 #endif
+   }
 
    if (debug) {
       va_list args;