diff options
author | wm4 <wm4@nowhere> | 2014-12-22 12:45:43 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-12-22 12:45:43 +0100 |
commit | 16a5971d28ae3ac72a9e38b00d73162ec24d56a9 (patch) | |
tree | e28220dca3ba376eb438065f514f2e5c49e8af42 | |
parent | c640b8f3c030927580aa1cb4fd30f2b68a5ccd63 (diff) | |
download | mpv-16a5971d28ae3ac72a9e38b00d73162ec24d56a9.tar.bz2 mpv-16a5971d28ae3ac72a9e38b00d73162ec24d56a9.tar.xz |
vo_opengl_cb: free context on exit
Minor memory leak.
Actually, this also exposes some problems in the QtQuick example. This
will have to be fixed in the example.
-rw-r--r-- | player/main.c | 3 | ||||
-rw-r--r-- | video/out/vo_opengl_cb.c | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/player/main.c b/player/main.c index 52bbc97733..f9d860d193 100644 --- a/player/main.c +++ b/player/main.c @@ -152,6 +152,9 @@ void mp_destroy(struct MPContext *mpctx) mp_clients_destroy(mpctx); + talloc_free(mpctx->gl_cb_ctx); + mpctx->gl_cb_ctx = NULL; + osd_free(mpctx->osd); if (cas_terminal_owner(mpctx, mpctx)) { diff --git a/video/out/vo_opengl_cb.c b/video/out/vo_opengl_cb.c index a6731c6a51..363b6a333f 100644 --- a/video/out/vo_opengl_cb.c +++ b/video/out/vo_opengl_cb.c @@ -79,10 +79,18 @@ struct mpv_opengl_cb_context { struct vo *active; }; +static void free_ctx(void *ptr) +{ + mpv_opengl_cb_context *ctx = ptr; + + pthread_mutex_destroy(&ctx->lock); +} + struct mpv_opengl_cb_context *mp_opengl_create(struct mpv_global *g, struct osd_state *osd) { mpv_opengl_cb_context *ctx = talloc_zero(NULL, mpv_opengl_cb_context); + talloc_set_destructor(ctx, free_ctx); ctx->log = mp_log_new(ctx, g->log, "opengl-cb"); pthread_mutex_init(&ctx->lock, NULL); |