diff options
author | wm4 <wm4@nowhere> | 2014-05-28 01:07:24 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-05-28 02:08:45 +0200 |
commit | 8dfd93c6fbaa2af1f0f996072f0db52bd83ee28d (patch) | |
tree | 4b07f3f0ff0985ea20738a5739334731356ff40e /video/out/vo_vaapi.c | |
parent | ff73d25308dece987e0ded07291054595d6bd764 (diff) | |
download | mpv-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.c | 11 |
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 |