From 012a8ef2cc35aa54c1d631a4a0bbf3639e6dff37 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 15 Feb 2016 14:50:03 +0100 Subject: vo_opengl_cb: unbreak destroying+recreating GL context A client API user is allowed to call mpv_opengl_cb_uninit_gl() followed by mpv_opengl_cb_init_gl(). This crashed; fix it by fixing the lifetime of ctx->gl. --- video/out/vo_opengl_cb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'video') diff --git a/video/out/vo_opengl_cb.c b/video/out/vo_opengl_cb.c index 6c425e390d..7accfc1a92 100644 --- a/video/out/vo_opengl_cb.c +++ b/video/out/vo_opengl_cb.c @@ -129,8 +129,6 @@ struct mpv_opengl_cb_context *mp_opengl_create(struct mpv_global *g, pthread_mutex_init(&ctx->lock, NULL); pthread_cond_init(&ctx->wakeup, NULL); - ctx->gl = talloc_zero(ctx, GL); - ctx->global = g; ctx->log = mp_log_new(ctx, g->log, "opengl-cb"); ctx->client_api = client_api; @@ -174,6 +172,8 @@ int mpv_opengl_cb_init_gl(struct mpv_opengl_cb_context *ctx, const char *exts, if (ctx->renderer) return MPV_ERROR_INVALID_PARAMETER; + ctx->gl = talloc_zero(ctx, GL); + mpgl_load_functions2(ctx->gl, get_proc_address, get_proc_address_ctx, exts, ctx->log); ctx->renderer = gl_video_init(ctx->gl, ctx->log, ctx->global); -- cgit v1.2.3