aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--alc/backends/wasapi.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/alc/backends/wasapi.cpp b/alc/backends/wasapi.cpp
index 3dd08613..b5283e2a 100644
--- a/alc/backends/wasapi.cpp
+++ b/alc/backends/wasapi.cpp
@@ -793,15 +793,17 @@ HRESULT WasapiPlayback::openProxy(const char *name)
}
void *ptr;
+ ComPtr<IMMDevice> mmdev;
HRESULT hr{CoCreateInstance(CLSID_MMDeviceEnumerator, nullptr, CLSCTX_INPROC_SERVER,
IID_IMMDeviceEnumerator, &ptr)};
- ComPtr<IMMDeviceEnumerator> enumerator{static_cast<IMMDeviceEnumerator*>(ptr)};
- ComPtr<IMMDevice> mmdev;
- if(!devid)
- hr = enumerator->GetDefaultAudioEndpoint(eRender, eMultimedia, mmdev.getPtr());
- else
- hr = enumerator->GetDevice(devid, mmdev.getPtr());
- enumerator = nullptr;
+ if(SUCCEEDED(hr))
+ {
+ ComPtr<IMMDeviceEnumerator> enumerator{static_cast<IMMDeviceEnumerator*>(ptr)};
+ if(!devid)
+ hr = enumerator->GetDefaultAudioEndpoint(eRender, eMultimedia, mmdev.getPtr());
+ else
+ hr = enumerator->GetDevice(devid, mmdev.getPtr());
+ }
if(FAILED(hr))
{
WARN("Failed to open device \"%s\"\n", name?name:"(default)");
@@ -1362,12 +1364,14 @@ HRESULT WasapiCapture::openProxy(const char *name)
void *ptr;
HRESULT hr{CoCreateInstance(CLSID_MMDeviceEnumerator, nullptr, CLSCTX_INPROC_SERVER,
IID_IMMDeviceEnumerator, &ptr)};
- ComPtr<IMMDeviceEnumerator> enumerator{static_cast<IMMDeviceEnumerator*>(ptr)};
- if(!devid)
- hr = enumerator->GetDefaultAudioEndpoint(eCapture, eMultimedia, mMMDev.getPtr());
- else
- hr = enumerator->GetDevice(devid, mMMDev.getPtr());
- enumerator = nullptr;
+ if(SUCCEEDED(hr))
+ {
+ ComPtr<IMMDeviceEnumerator> enumerator{static_cast<IMMDeviceEnumerator*>(ptr)};
+ if(!devid)
+ hr = enumerator->GetDefaultAudioEndpoint(eCapture, eMultimedia, mMMDev.getPtr());
+ else
+ hr = enumerator->GetDevice(devid, mMMDev.getPtr());
+ }
if(FAILED(hr))
{
WARN("Failed to open device \"%s\"\n", name?name:"(default)");