summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Arceri <tarceri@itsqueeze.com>2018-04-13 15:23:57 +1000
committerJuan A. Suarez Romero <jasuarez@igalia.com>2018-04-18 09:59:46 +0200
commit83518bf6fa844291a25edbba658acd5a2271b713 (patch)
treed132d6ae47e676ce7430d3788c533a0f0ca856e6
parent0bb53b38aed1fc054e8514839db5c1fde2143d5f (diff)
mesa: free debug messages when destroying the debug state
Fixes: 04a8baad3721 "mesa: refactor _mesa_PopDebugGroup and _mesa_free_errors_data" Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98281 (cherry picked from commit a63e69f5f0b4d960bd106068d8c7d13b82fea759)
-rw-r--r--src/mesa/main/debug_output.c45
1 files changed, 23 insertions, 22 deletions
diff --git a/src/mesa/main/debug_output.c b/src/mesa/main/debug_output.c
index bc933db93d4..f76a9105ce0 100644
--- a/src/mesa/main/debug_output.c
+++ b/src/mesa/main/debug_output.c
@@ -502,6 +502,28 @@ debug_clear_group(struct gl_debug_state *debug)
}
/**
+ * Delete the oldest debug messages out of the log.
+ */
+static void
+debug_delete_messages(struct gl_debug_state *debug, int count)
+{
+ struct gl_debug_log *log = &debug->Log;
+
+ if (count > log->NumMessages)
+ count = log->NumMessages;
+
+ while (count--) {
+ struct gl_debug_message *msg = &log->Messages[log->NextMessage];
+
+ debug_message_clear(msg);
+
+ log->NumMessages--;
+ log->NextMessage++;
+ log->NextMessage %= MAX_DEBUG_LOGGED_MESSAGES;
+ }
+}
+
+/**
* Loop through debug group stack tearing down states for
* filtering debug messages. Then free debug output state.
*/
@@ -514,6 +536,7 @@ debug_destroy(struct gl_debug_state *debug)
}
debug_clear_group(debug);
+ debug_delete_messages(debug, debug->Log.NumMessages);
free(debug);
}
@@ -648,28 +671,6 @@ debug_fetch_message(const struct gl_debug_state *debug)
return (log->NumMessages) ? &log->Messages[log->NextMessage] : NULL;
}
-/**
- * Delete the oldest debug messages out of the log.
- */
-static void
-debug_delete_messages(struct gl_debug_state *debug, int count)
-{
- struct gl_debug_log *log = &debug->Log;
-
- if (count > log->NumMessages)
- count = log->NumMessages;
-
- while (count--) {
- struct gl_debug_message *msg = &log->Messages[log->NextMessage];
-
- debug_message_clear(msg);
-
- log->NumMessages--;
- log->NextMessage++;
- log->NextMessage %= MAX_DEBUG_LOGGED_MESSAGES;
- }
-}
-
static struct gl_debug_message *
debug_get_group_message(struct gl_debug_state *debug)
{