summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_wasapi.c
diff options
context:
space:
mode:
authorKevin Mitchell <kevmitch@gmail.com>2014-11-27 18:44:06 -0800
committerDiogo Franco (Kovensky) <diogomfranco@gmail.com>2015-01-25 17:00:10 +0900
commit1936cfdb09ed23917bf1034374caefc8d1cd0575 (patch)
tree9057d707d3b7979efcacd633372347a6a9adf736 /audio/out/ao_wasapi.c
parent84c2dc882db765ffc01011f98bce2ef5026898cf (diff)
downloadmpv-1936cfdb09ed23917bf1034374caefc8d1cd0575.tar.bz2
mpv-1936cfdb09ed23917bf1034374caefc8d1cd0575.tar.xz
ao/wasapi: fix unmatched CoUninitialize() on init failure
Diffstat (limited to 'audio/out/ao_wasapi.c')
-rw-r--r--audio/out/ao_wasapi.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/audio/out/ao_wasapi.c b/audio/out/ao_wasapi.c
index 8477a9cb51..30767549fd 100644
--- a/audio/out/ao_wasapi.c
+++ b/audio/out/ao_wasapi.c
@@ -195,12 +195,15 @@ static void uninit(struct ao *ao)
if (state->VistaBlob.hAvrt)
FreeLibrary(state->VistaBlob.hAvrt);
closehandles(ao);
+ CoUninitialize();
MP_DBG(ao, "Uninit wasapi done\n");
}
static int init(struct ao *ao)
{
MP_DBG(ao, "Init wasapi\n");
+ CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
+
ao->format = af_fmt_from_planar(ao->format);
struct mp_chmap_sel sel = {0};
mp_chmap_sel_add_waveext(&sel);
@@ -356,7 +359,9 @@ static void audio_resume(struct ao *ao)
static void list_devs(struct ao *ao, struct ao_device_list *list)
{
+ CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
wasapi_enumerate_devices(mp_null_log, ao, list);
+ CoUninitialize();
}
#define OPT_BASE_STRUCT struct wasapi_state