From 35f82b01cf10bdd728535a4f2b20c00ddca11e9c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 24 Oct 2010 23:03:31 +0000 Subject: [PATCH 1/1] Don't handle RPC_E_CHANGED_MODE return of OleInitialize() as an error. This error means that OLE had already been initialized so from our point of view it counts as a success. Closes #12516. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65914 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/ole/oleutils.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/include/wx/msw/ole/oleutils.h b/include/wx/msw/ole/oleutils.h index a9891f8fca..655c938b68 100644 --- a/include/wx/msw/ole/oleutils.h +++ b/include/wx/msw/ole/oleutils.h @@ -36,12 +36,19 @@ // return true if ok, false otherwise inline bool wxOleInitialize() { - // we need to initialize OLE library + HRESULT #ifdef __WXWINCE__ - if ( FAILED(::CoInitializeEx(NULL, COINIT_MULTITHREADED)) ) + hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED); #else - if ( FAILED(::OleInitialize(NULL)) ) + hr = ::OleInitialize(NULL); #endif + + // RPC_E_CHANGED_MODE indicates that OLE had been already initialized + // before, albeit with different mode. Don't consider it to be an error as + // we don't actually care ourselves about the mode used so this allows the + // main application to call OleInitialize() on its own before we do if it + // needs non-default mode. + if ( hr != RPC_E_CHANGED_MODE && FAILED(hr) ) { wxLogError(_("Cannot initialize OLE")); -- 2.45.2