summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-02-15 14:50:03 +0100
committerwm4 <wm4@nowhere>2016-02-15 14:50:03 +0100
commit012a8ef2cc35aa54c1d631a4a0bbf3639e6dff37 (patch)
tree1851fca5af9b5fc6962fd2f843cebc8b9f6fb065 /video
parentacf239a45c17e474dd9c266f018f1502e1e13587 (diff)
downloadmpv-012a8ef2cc35aa54c1d631a4a0bbf3639e6dff37.tar.bz2
mpv-012a8ef2cc35aa54c1d631a4a0bbf3639e6dff37.tar.xz
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.
Diffstat (limited to 'video')
-rw-r--r--video/out/vo_opengl_cb.c4
1 files changed, 2 insertions, 2 deletions
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);