diff options
author | wm4 <wm4@nowhere> | 2016-02-15 14:50:03 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-02-15 14:50:03 +0100 |
commit | 012a8ef2cc35aa54c1d631a4a0bbf3639e6dff37 (patch) | |
tree | 1851fca5af9b5fc6962fd2f843cebc8b9f6fb065 | |
parent | acf239a45c17e474dd9c266f018f1502e1e13587 (diff) | |
download | mpv-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.
-rw-r--r-- | video/out/vo_opengl_cb.c | 4 |
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); |