diff options
author | Timothy Arceri <tarceri@itsqueeze.com> | 2018-04-13 15:23:57 +1000 |
---|---|---|
committer | Juan A. Suarez Romero <jasuarez@igalia.com> | 2018-04-18 09:59:46 +0200 |
commit | 83518bf6fa844291a25edbba658acd5a2271b713 (patch) | |
tree | d132d6ae47e676ce7430d3788c533a0f0ca856e6 | |
parent | 0bb53b38aed1fc054e8514839db5c1fde2143d5f (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.c | 45 |
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) { |