summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-05-28 02:08:19 +0200
committerwm4 <wm4@nowhere>2014-06-14 14:07:15 +0200
commitff2e39a3d28ce4f08a4683577844cd0f2f6c7fb2 (patch)
tree208d8125d53c550ba93c003ffbe9b8a547f664fd
parent844656d1354fba3c3bda05af76cf9efe82af0935 (diff)
downloadmpv-ff2e39a3d28ce4f08a4683577844cd0f2f6c7fb2.tar.bz2
mpv-ff2e39a3d28ce4f08a4683577844cd0f2f6c7fb2.tar.xz
vaapi: fix destruction with --hwdec=haapi-copy
This is incomplete; the video chain will still hold some vaapi objects after destroying the decoder and thus the vaapi context. This is very bad. Fixing it would require something like refcounting the vaapi context, but I don't really want to.
-rw-r--r--video/decode/vaapi.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/video/decode/vaapi.c b/video/decode/vaapi.c
index d4b1c41840..9142bc2a62 100644
--- a/video/decode/vaapi.c
+++ b/video/decode/vaapi.c
@@ -334,11 +334,12 @@ static struct mp_image *allocate_image(struct lavc_ctx *ctx, int format,
static void destroy_va_dummy_ctx(struct priv *p)
{
+ va_destroy(p->ctx);
+ p->ctx = NULL;
+ p->display = NULL;
if (p->x11_display)
XCloseDisplay(p->x11_display);
p->x11_display = NULL;
- va_destroy(p->ctx);
- p->ctx = NULL;
}
// Creates a "private" VADisplay, disconnected from the VO. We just create a
@@ -372,6 +373,7 @@ static void uninit(struct lavc_ctx *ctx)
destroy_decoder(ctx);
va_surface_pool_release(p->pool);
+ p->pool = NULL;
if (p->x11_display)
destroy_va_dummy_ctx(p);