From 37eae89d67d882a5588a24b9f5a405359f797069 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Mon, 3 Sep 2018 11:35:39 +0200 Subject: [PATCH] Tolerate RPC_E_CHANGED_MODE on COM initialization --- include/wxex/comutils.h | 4 ++-- src/comutils.cpp | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/include/wxex/comutils.h b/include/wxex/comutils.h index 20d0167..9b27ae4 100644 --- a/include/wxex/comutils.h +++ b/include/wxex/comutils.h @@ -1,5 +1,5 @@ /* - Copyright 2016-2017 Amebis + Copyright 2016-2018 Amebis Copyright 2016 GÉANT This file is part of wxExtend. @@ -62,7 +62,7 @@ public: operator bool() const { return m_ok; } private: - bool m_ok; + bool m_ok, m_initialized; }; /// @} diff --git a/src/comutils.cpp b/src/comutils.cpp index 89ab9bd..3528c8d 100644 --- a/src/comutils.cpp +++ b/src/comutils.cpp @@ -1,5 +1,5 @@ /* - Copyright 2015-2017 Amebis + Copyright 2015-2018 Amebis Copyright 2016 GÉANT This file is part of wxExtend. @@ -27,12 +27,15 @@ wxCoInitializer::wxCoInitializer(DWORD dwCoInit) { - m_ok = SUCCEEDED(::CoInitializeEx(NULL, dwCoInit)); + HRESULT hr = ::CoInitializeEx(NULL, dwCoInit); + + m_initialized = SUCCEEDED(hr); + m_ok = SUCCEEDED(hr) || hr == RPC_E_CHANGED_MODE; } wxCoInitializer::~wxCoInitializer() { - if (m_ok) + if (m_initialized) ::CoUninitialize(); }