From: Nello De Gregoris <bluechxindv@gmail.com> --- dlls/xaudio2_7/tests/xaudio2.c | 2 +- libs/faudio/src/FAudio_platform_win32.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/dlls/xaudio2_7/tests/xaudio2.c b/dlls/xaudio2_7/tests/xaudio2.c index 3c0702a1bd4..2c7a58cd7e7 100644 --- a/dlls/xaudio2_7/tests/xaudio2.c +++ b/dlls/xaudio2_7/tests/xaudio2.c @@ -1511,7 +1511,7 @@ static void test_wma_voice_without_com(IXAudio2 *audio) WaitForSingleObject(thread, INFINITE); CloseHandle(thread); - todo_wine ok(params.hr == S_OK, "got %#lx\n", params.hr); + ok(params.hr == S_OK, "got %#lx\n", params.hr); IXAudio2MasteringVoice_DestroyVoice(master); } diff --git a/libs/faudio/src/FAudio_platform_win32.c b/libs/faudio/src/FAudio_platform_win32.c index 714d36c66d7..77a1e5cbc4b 100644 --- a/libs/faudio/src/FAudio_platform_win32.c +++ b/libs/faudio/src/FAudio_platform_win32.c @@ -45,7 +45,7 @@ static CRITICAL_SECTION faudio_cs = { NULL, -1, 0, 0, 0, 0 }; static IMMDeviceEnumerator *device_enumerator; -static HRESULT init_hr; +static CO_MTA_USAGE_COOKIE mta_cookie; struct FAudioWin32PlatformData { @@ -483,7 +483,7 @@ void FAudio_PlatformAddRef() EnterCriticalSection(&faudio_cs); if (!device_enumerator) { - init_hr = CoInitialize(NULL); + CoIncrementMTAUsage(&mta_cookie); hr = CoCreateInstance( &CLSID_MMDeviceEnumerator, NULL, @@ -503,7 +503,11 @@ void FAudio_PlatformRelease() if (!IMMDeviceEnumerator_Release(device_enumerator)) { device_enumerator = NULL; - if (SUCCEEDED(init_hr)) CoUninitialize(); + if (mta_cookie) + { + CoDecrementMTAUsage(mta_cookie); + mta_cookie = NULL; + } } LeaveCriticalSection(&faudio_cs); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11717