From 2508aa870167e86fa7e71e982388d5265f11fad1 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Tue, 21 May 2019 06:42:46 +0200 Subject: 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 --- src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp | 5 +++-- 1 file 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 QWindowsAudioDeviceInfo::availableDevices(QAudio::Mode mode) QList 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 QWindowsAudioDeviceInfo::availableDevices(QAudio::Mode mode) } pDevEnum->Release(); } - CoUninitialize(); + if (SUCCEEDED(hrCoInit)) + CoUninitialize(); return devices; } -- cgit v1.2.3