aboutsummaryrefslogtreecommitdiffstats
path: root/alc/backends/wasapi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'alc/backends/wasapi.cpp')
-rw-r--r--alc/backends/wasapi.cpp46
1 files changed, 21 insertions, 25 deletions
diff --git a/alc/backends/wasapi.cpp b/alc/backends/wasapi.cpp
index 71975b55..62c4c58a 100644
--- a/alc/backends/wasapi.cpp
+++ b/alc/backends/wasapi.cpp
@@ -973,15 +973,15 @@ int WasapiProxy::messageHandler(std::promise<HRESULT> *promise)
{
TRACE("Starting message thread\n");
- HRESULT hr{CoInitializeEx(nullptr, COINIT_MULTITHREADED)};
- if(FAILED(hr))
+ ComWrapper com{COINIT_MULTITHREADED};
+ if(!com)
{
- WARN("Failed to initialize COM: 0x%08lx\n", hr);
- promise->set_value(hr);
+ WARN("Failed to initialize COM: 0x%08lx\n", com.status());
+ promise->set_value(com.status());
return 0;
}
- hr = sDeviceHelper.emplace().init();
+ HRESULT hr{sDeviceHelper.emplace().init()};
promise->set_value(hr);
promise = nullptr;
if(FAILED(hr))
@@ -1040,7 +1040,6 @@ int WasapiProxy::messageHandler(std::promise<HRESULT> *promise)
skip_loop:
sDeviceHelper.reset();
- CoUninitialize();
return 0;
}
@@ -1113,11 +1112,11 @@ WasapiPlayback::~WasapiPlayback()
FORCE_ALIGN int WasapiPlayback::mixerProc()
{
- HRESULT hr{CoInitializeEx(nullptr, COINIT_MULTITHREADED)};
- if(FAILED(hr))
+ ComWrapper com{COINIT_MULTITHREADED};
+ if(!com)
{
- ERR("CoInitializeEx(nullptr, COINIT_MULTITHREADED) failed: 0x%08lx\n", hr);
- mDevice->handleDisconnect("COM init failed: 0x%08lx", hr);
+ ERR("CoInitializeEx(nullptr, COINIT_MULTITHREADED) failed: 0x%08lx\n", com.status());
+ mDevice->handleDisconnect("COM init failed: 0x%08lx", com.status());
return 1;
}
@@ -1135,7 +1134,7 @@ FORCE_ALIGN int WasapiPlayback::mixerProc()
while(!mKillNow.load(std::memory_order_relaxed))
{
UINT32 written;
- hr = audio.mClient->GetCurrentPadding(&written);
+ HRESULT hr{audio.mClient->GetCurrentPadding(&written)};
if(FAILED(hr))
{
ERR("Failed to get padding: 0x%08lx\n", hr);
@@ -1194,17 +1193,16 @@ FORCE_ALIGN int WasapiPlayback::mixerProc()
}
mPadding.store(0u, std::memory_order_release);
- CoUninitialize();
return 0;
}
FORCE_ALIGN int WasapiPlayback::mixerSpatialProc()
{
- HRESULT hr{CoInitializeEx(nullptr, COINIT_MULTITHREADED)};
- if(FAILED(hr))
+ ComWrapper com{COINIT_MULTITHREADED};
+ if(!com)
{
- ERR("CoInitializeEx(nullptr, COINIT_MULTITHREADED) failed: 0x%08lx\n", hr);
- mDevice->handleDisconnect("COM init failed: 0x%08lx", hr);
+ ERR("CoInitializeEx(nullptr, COINIT_MULTITHREADED) failed: 0x%08lx\n", com.status());
+ mDevice->handleDisconnect("COM init failed: 0x%08lx", com.status());
return 1;
}
@@ -1231,7 +1229,7 @@ FORCE_ALIGN int WasapiPlayback::mixerSpatialProc()
{
ERR("WaitForSingleObjectEx error: 0x%lx\n", res);
- hr = audio.mRender->Reset();
+ HRESULT hr{audio.mRender->Reset()};
if(FAILED(hr))
{
ERR("ISpatialAudioObjectRenderStream::Reset failed: 0x%08lx\n", hr);
@@ -1241,7 +1239,7 @@ FORCE_ALIGN int WasapiPlayback::mixerSpatialProc()
}
UINT32 dynamicCount{}, framesToDo{};
- hr = audio.mRender->BeginUpdatingAudioObjects(&dynamicCount, &framesToDo);
+ HRESULT hr{audio.mRender->BeginUpdatingAudioObjects(&dynamicCount, &framesToDo)};
if(SUCCEEDED(hr))
{
if(channels.empty()) UNLIKELY
@@ -1310,7 +1308,6 @@ FORCE_ALIGN int WasapiPlayback::mixerSpatialProc()
}
mPadding.store(0u, std::memory_order_release);
- CoUninitialize();
return 0;
}
@@ -2150,11 +2147,11 @@ WasapiCapture::~WasapiCapture()
FORCE_ALIGN int WasapiCapture::recordProc()
{
- HRESULT hr{CoInitializeEx(nullptr, COINIT_MULTITHREADED)};
- if(FAILED(hr))
+ ComWrapper com{COINIT_MULTITHREADED};
+ if(!com)
{
- ERR("CoInitializeEx(nullptr, COINIT_MULTITHREADED) failed: 0x%08lx\n", hr);
- mDevice->handleDisconnect("COM init failed: 0x%08lx", hr);
+ ERR("CoInitializeEx(nullptr, COINIT_MULTITHREADED) failed: 0x%08lx\n", com.status());
+ mDevice->handleDisconnect("COM init failed: 0x%08lx", com.status());
return 1;
}
@@ -2164,7 +2161,7 @@ FORCE_ALIGN int WasapiCapture::recordProc()
while(!mKillNow.load(std::memory_order_relaxed))
{
UINT32 avail;
- hr = mCapture->GetNextPacketSize(&avail);
+ HRESULT hr{mCapture->GetNextPacketSize(&avail)};
if(FAILED(hr))
ERR("Failed to get next packet size: 0x%08lx\n", hr);
else if(avail > 0)
@@ -2235,7 +2232,6 @@ FORCE_ALIGN int WasapiCapture::recordProc()
ERR("WaitForSingleObjectEx error: 0x%lx\n", res);
}
- CoUninitialize();
return 0;
}