diff --git a/rpcs3/Emu/Audio/XAudio2/XAudio28Thread.cpp b/rpcs3/Emu/Audio/XAudio2/XAudio28Thread.cpp index a279a0d552..0e54cc35d6 100644 --- a/rpcs3/Emu/Audio/XAudio2/XAudio28Thread.cpp +++ b/rpcs3/Emu/Audio/XAudio2/XAudio28Thread.cpp @@ -20,6 +20,14 @@ void XAudio2Thread::xa28_init(void* module) HRESULT hr = S_OK; + hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); + if (FAILED(hr)) + { + LOG_ERROR(GENERAL, "XAudio2Thread : CoInitializeEx() failed(0x%08x)", (u32)hr); + Emu.Pause(); + return; + } + hr = create(&s_tls_xaudio2_instance, 0, XAUDIO2_DEFAULT_PROCESSOR); if (FAILED(hr)) { @@ -57,6 +65,8 @@ void XAudio2Thread::xa28_destroy() s_tls_xaudio2_instance->StopEngine(); s_tls_xaudio2_instance->Release(); } + + CoUninitialize(); } void XAudio2Thread::xa28_play()