diff options
author | Ilia Mirkin <imirkin@alum.mit.edu> | 2013-11-29 05:52:27 -0500 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2013-12-04 06:20:36 -0800 |
commit | 267679be84de5bc9d2bd0fccb1712bc5cddb6be7 (patch) | |
tree | 424c0749c5879f0e8fb79138abf10075e8fbdf89 /src/mesa/main/performance_monitor.c | |
parent | c45cf6199fc493538cef33125c8a97a892e2ca83 (diff) | |
download | external_mesa3d-267679be84de5bc9d2bd0fccb1712bc5cddb6be7.zip external_mesa3d-267679be84de5bc9d2bd0fccb1712bc5cddb6be7.tar.gz external_mesa3d-267679be84de5bc9d2bd0fccb1712bc5cddb6be7.tar.bz2 |
mesa: don't leak performance monitors on context destroy
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: "10.0" <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src/mesa/main/performance_monitor.c')
-rw-r--r-- | src/mesa/main/performance_monitor.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mesa/main/performance_monitor.c b/src/mesa/main/performance_monitor.c index 4981e6f..e62f770 100644 --- a/src/mesa/main/performance_monitor.c +++ b/src/mesa/main/performance_monitor.c @@ -93,6 +93,25 @@ fail: return NULL; } +static void +free_performance_monitor(GLuint key, void *data, void *user) +{ + struct gl_perf_monitor_object *m = data; + struct gl_context *ctx = user; + + ralloc_free(m->ActiveGroups); + ralloc_free(m->ActiveCounters); + ctx->Driver.DeletePerfMonitor(ctx, m); +} + +void +_mesa_free_performance_monitors(struct gl_context *ctx) +{ + _mesa_HashDeleteAll(ctx->PerfMonitor.Monitors, + free_performance_monitor, ctx); + _mesa_DeleteHashTable(ctx->PerfMonitor.Monitors); +} + static inline struct gl_perf_monitor_object * lookup_monitor(struct gl_context *ctx, GLuint id) { |