summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2019-05-21 06:42:46 +0200
committerAndy Shaw <andy.shaw@qt.io>2019-05-21 09:11:38 +0200
commit2508aa870167e86fa7e71e982388d5265f11fad1 (patch)
treefe48f6e8e287ceab56e533297181dd900578f24f
parent1835a9f398c1400a254b5df8f8da2f1e357a45a0 (diff)
Only call CoUnitialize() if calling CoInitialize() was necessary
As CoInitialize() may have been called by something else beforehand then it should only call CoUnitialize() if it returns S_OK which indicates it was not already called. That ensures it is only uninitalized if it did the initialization. Change-Id: I1b723e0b69fe5f9ff7c2c6ef083e9196f21812b2 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
-rw-r--r--src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp
index c054c0f76..70e7fbce5 100644
--- a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp
+++ b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp
@@ -396,7 +396,7 @@ QList<QByteArray> QWindowsAudioDeviceInfo::availableDevices(QAudio::Mode mode)
QList<QByteArray> devices;
//enumerate device fullnames through directshow api
- CoInitialize(NULL);
+ auto hrCoInit = CoInitialize(nullptr);
ICreateDevEnum *pDevEnum = NULL;
IEnumMoniker *pEnum = NULL;
// Create the System device enumerator
@@ -447,7 +447,8 @@ QList<QByteArray> QWindowsAudioDeviceInfo::availableDevices(QAudio::Mode mode)
}
pDevEnum->Release();
}
- CoUninitialize();
+ if (SUCCEEDED(hrCoInit))
+ CoUninitialize();
return devices;
}