diff options
author | Andy Shaw <andy.shaw@qt.io> | 2019-05-21 06:42:46 +0200 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2019-05-21 09:11:38 +0200 |
commit | 2508aa870167e86fa7e71e982388d5265f11fad1 (patch) | |
tree | fe48f6e8e287ceab56e533297181dd900578f24f | |
parent | 1835a9f398c1400a254b5df8f8da2f1e357a45a0 (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.cpp | 5 |
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; } |