diff options
author | Kevin Mitchell <kevmitch@gmail.com> | 2014-11-28 07:31:05 -0800 |
---|---|---|
committer | Diogo Franco (Kovensky) <diogomfranco@gmail.com> | 2015-01-25 17:00:11 +0900 |
commit | 2e931b34f40ef8775c96ea9f4a63fa48ae04ead7 (patch) | |
tree | f9b3b30791460491f2e457a5003c38b331c543dd | |
parent | ade8b6214dcaef34bb0a344a2717940c16830bbb (diff) | |
download | mpv-2e931b34f40ef8775c96ea9f4a63fa48ae04ead7.tar.bz2 mpv-2e931b34f40ef8775c96ea9f4a63fa48ae04ead7.tar.xz |
ao/wasapi: more missed cleanup on failure
-rw-r--r-- | audio/out/ao_wasapi.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/audio/out/ao_wasapi.c b/audio/out/ao_wasapi.c index c092508431..b54e9aa277 100644 --- a/audio/out/ao_wasapi.c +++ b/audio/out/ao_wasapi.c @@ -180,7 +180,8 @@ static void uninit(struct ao *ao) MP_DBG(ao, "Uninit wasapi\n"); struct wasapi_state *state = (struct wasapi_state *)ao->priv; wasapi_release_proxies(state); - SetEvent(state->hUninit); + if (state->hUninit) + SetEvent(state->hUninit); /* wait up to 10 seconds */ if (WaitForSingleObject(state->threadLoop, 10000) == WAIT_TIMEOUT){ MP_ERR(ao, "Audio loop thread refuses to abort\n"); @@ -229,7 +230,8 @@ static int init(struct ao *ao) if (!state->init_done || !state->hFeed || !state->hUninit || !state->hForceFeed || !state->hFeedDone) { - closehandles(ao); + MP_ERR(ao, "Error initing events\n"); + uninit(ao); /* failed to init events */ return -1; } @@ -239,6 +241,7 @@ static int init(struct ao *ao) if (!state->threadLoop) { /* failed to init thread */ MP_ERR(ao, "Failed to create thread\n"); + uninit(ao); return -1; } @@ -334,7 +337,6 @@ static int control(struct ao *ao, enum aocontrol cmd, void *arg) } } - static void audio_reset(struct ao *ao) { struct wasapi_state *state = (struct wasapi_state *)ao->priv; |