mesa: free debug messages when destroying the debug state

Fixes: 04a8baad37 "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 a63e69f5f0)
This commit is contained in:
Timothy Arceri 2018-04-13 15:23:57 +10:00 committed by Juan A. Suarez Romero
parent 279c628560
commit e1b87631a9

View file

@ -501,6 +501,28 @@ debug_clear_group(struct gl_debug_state *debug)
debug->Groups[gstack] = 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;
}
}
/**
* 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)
{