summaryrefslogtreecommitdiffstats
path: root/video/out/vo_vaapi.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-05-28 01:07:24 +0200
committerwm4 <wm4@nowhere>2014-05-28 02:08:45 +0200
commit8dfd93c6fbaa2af1f0f996072f0db52bd83ee28d (patch)
tree4b07f3f0ff0985ea20738a5739334731356ff40e /video/out/vo_vaapi.c
parentff73d25308dece987e0ded07291054595d6bd764 (diff)
downloadmpv-8dfd93c6fbaa2af1f0f996072f0db52bd83ee28d.tar.bz2
mpv-8dfd93c6fbaa2af1f0f996072f0db52bd83ee28d.tar.xz
vo_vaapi: cleanup error handling on init
Close the X connection if initializing vaapi fails.
Diffstat (limited to 'video/out/vo_vaapi.c')
-rw-r--r--video/out/vo_vaapi.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/video/out/vo_vaapi.c b/video/out/vo_vaapi.c
index 470d767b60..8fb863ece6 100644
--- a/video/out/vo_vaapi.c
+++ b/video/out/vo_vaapi.c
@@ -571,16 +571,17 @@ static int preinit(struct vo *vo)
VAStatus status;
if (!vo_x11_init(vo))
- return -1;
+ goto fail;
p->display = vaGetDisplay(vo->x11->display);
if (!p->display)
- return -1;
+ goto fail;
p->mpvaapi = va_initialize(p->display, p->log);
if (!p->mpvaapi) {
vaTerminate(p->display);
- return -1;
+ p->display = NULL;
+ goto fail;
}
p->pool = mp_image_pool_new(MAX_OUTPUT_SURFACES + 3);
@@ -631,6 +632,10 @@ static int preinit(struct vo *vo)
p->va_num_display_attrs = 0;
}
return 0;
+
+fail:
+ uninit(vo);
+ return -1;
}
#define OPT_BASE_STRUCT struct priv