mesa: refactor debug output should_log
authorChia-I Wu <olvaffe@gmail.com>
Tue, 22 Apr 2014 02:18:09 +0000 (10:18 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Sun, 27 Apr 2014 02:06:20 +0000 (10:06 +0800)
Move the message filtering logic to debug_is_message_enabled.  No functional
change.

Signed-off-by: Chia-I Wu <olv@lunarg.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/main/errors.c

index 66d3146c12c96cfd18522a020d58afa422ae96c0..55b50b3e8d0d50ecc3b4db295ffb43f2b7d3ea71 100644 (file)
@@ -217,6 +217,63 @@ debug_create(void)
    return debug;
 }
 
+/**
+ * Returns if the given message source/type/ID tuple is enabled.
+ */
+static bool
+debug_is_message_enabled(struct gl_debug_state *debug,
+                         enum mesa_debug_source source,
+                         enum mesa_debug_type type,
+                         GLuint id,
+                         enum mesa_debug_severity severity)
+{
+   const GLint gstack = debug->GroupStackDepth;
+   struct gl_debug_namespace *nspace =
+      &debug->Namespaces[gstack][source][type];
+   uintptr_t state = 0;
+
+   if (!debug->DebugOutput)
+      return false;
+
+   /* In addition to not being able to store zero as a value, HashTable also
+    * can't use zero as a key.
+    */
+   if (id)
+      state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id);
+   else
+      state = nspace->ZeroID;
+
+   /* Only do this once for each ID. This makes sure the ID exists in,
+    * at most, one list, and does not pointlessly appear multiple times.
+    */
+   if (!(state & KNOWN_SEVERITY)) {
+      struct gl_debug_severity *entry;
+
+      if (state == NOT_FOUND) {
+         if (debug->Defaults[gstack][severity][source][type])
+            state = ENABLED;
+         else
+            state = DISABLED;
+      }
+
+      entry = malloc(sizeof *entry);
+      if (!entry)
+         goto out;
+
+      state |= KNOWN_SEVERITY;
+
+      if (id)
+         _mesa_HashInsert(nspace->IDs, id, (void*)state);
+      else
+         nspace->ZeroID = state;
+
+      entry->ID = id;
+      insert_at_tail(&nspace->Severity[severity], &entry->link);
+   }
+out:
+   return (state & ENABLED_BIT);
+}
+
 
 /**
  * Return debug state for the context.  The debug state will be allocated
@@ -237,9 +294,6 @@ _mesa_get_debug_state(struct gl_context *ctx)
 
 
 
-/**
- * Returns the state of the given message source/type/ID tuple.
- */
 static GLboolean
 should_log(struct gl_context *ctx,
            enum mesa_debug_source source,
@@ -248,7 +302,6 @@ should_log(struct gl_context *ctx,
            enum mesa_debug_severity severity)
 {
    struct gl_debug_state *debug;
-   uintptr_t state = 0;
 
    if (!ctx->Debug) {
       /* no debug state set so far */
@@ -256,52 +309,10 @@ should_log(struct gl_context *ctx,
    }
 
    debug = _mesa_get_debug_state(ctx);
-   if (debug) {
-      const GLint gstack = debug->GroupStackDepth;
-      struct gl_debug_namespace *nspace =
-         &debug->Namespaces[gstack][source][type];
-
-      if (!debug->DebugOutput)
-         return GL_FALSE;
-
-      /* In addition to not being able to store zero as a value, HashTable also
-       * can't use zero as a key.
-       */
-      if (id)
-         state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id);
-      else
-         state = nspace->ZeroID;
-
-      /* Only do this once for each ID. This makes sure the ID exists in,
-       * at most, one list, and does not pointlessly appear multiple times.
-       */
-      if (!(state & KNOWN_SEVERITY)) {
-         struct gl_debug_severity *entry;
-
-         if (state == NOT_FOUND) {
-            if (debug->Defaults[gstack][severity][source][type])
-               state = ENABLED;
-            else
-               state = DISABLED;
-         }
-
-         entry = malloc(sizeof *entry);
-         if (!entry)
-            goto out;
-
-         state |= KNOWN_SEVERITY;
-
-         if (id)
-            _mesa_HashInsert(nspace->IDs, id, (void*)state);
-         else
-            nspace->ZeroID = state;
-
-         entry->ID = id;
-         insert_at_tail(&nspace->Severity[severity], &entry->link);
-      }
-   }
-out:
-   return !!(state & ENABLED_BIT);
+   if (debug)
+      return debug_is_message_enabled(debug, source, type, id, severity);
+   else
+      return GL_FALSE;
 }