From e7b78bea65a8e039ed60586093d18ab81151b838 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 4 Jan 2015 22:19:42 +0100 Subject: client API, vo_opengl_cb: properly uninit video mpv_opengl_cb_uninit_gl() can be called at any time; but then the decoder must be destroyed due to complications with hardware decoding. This is why kill_video() exists. To make things easier, there is the invariant that while vo_opengl_cb is active, the OpenGL state must exist. But kill_video() didn't actually destroy the VO; only the video decoder. This could trigger an assertion (vo_opengl_cb.c:187). Actually, the video output is always destroyed lazily at a later point if the decoder is destroyed, but not early enough for out purposes. --- player/client.c | 1 + 1 file changed, 1 insertion(+) (limited to 'player/client.c') diff --git a/player/client.c b/player/client.c index facac7174a..dee890efb3 100644 --- a/player/client.c +++ b/player/client.c @@ -1633,6 +1633,7 @@ void kill_video(struct mp_client_api *client_api) struct MPContext *mpctx = client_api->mpctx; mp_dispatch_lock(mpctx->dispatch); mp_switch_track(mpctx, STREAM_VIDEO, NULL); + uninit_video_out(mpctx); mp_dispatch_unlock(mpctx->dispatch); } -- cgit v1.2.3