]> git.saurik.com Git - wxWidgets.git/commitdiff
Don't handle RPC_E_CHANGED_MODE return of OleInitialize() as an error.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 24 Oct 2010 23:03:31 +0000 (23:03 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 24 Oct 2010 23:03:31 +0000 (23:03 +0000)
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

index a9891f8fca6fd83fca7db0615002fa086275bb6b..655c938b6863f67d19f8b06c9617d6a11f668fd9 100644 (file)
 // 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"));