Prefer CoInitializeEx instead of CoInitialize
As https://docs.microsoft.com/fr-fr/windows/win32/api/objbase/nf-objbase-coinitialize?redirectedfrom=MSDN
advised.
Moreover, it'll make concurrency model explicit
Change-Id: I247a49248bf45beb64a7985a7c0d078ee48efe2d
Change-Id: I6e755fd516d9fb2dd2a9df0c66d9afd6070447ea
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94669
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
diff --git a/avmedia/source/win/framegrabber.cxx b/avmedia/source/win/framegrabber.cxx
index 09f5a64..21b5ded 100644
--- a/avmedia/source/win/framegrabber.cxx
+++ b/avmedia/source/win/framegrabber.cxx
@@ -50,7 +50,7 @@ namespace avmedia::win {
FrameGrabber::FrameGrabber( const uno::Reference< lang::XMultiServiceFactory >& rxMgr ) :
mxMgr( rxMgr )
{
::CoInitialize( nullptr );
::CoInitializeEx( nullptr, COINIT_APARTMENTTHREADED );
}
diff --git a/avmedia/source/win/player.cxx b/avmedia/source/win/player.cxx
index 50323bb..8e08d9e 100644
--- a/avmedia/source/win/player.cxx
+++ b/avmedia/source/win/player.cxx
@@ -80,7 +80,7 @@ Player::Player( const uno::Reference< lang::XMultiServiceFactory >& rxMgr ) :
mbLooping( false ),
mbAddWindow( true )
{
::CoInitialize( nullptr );
::CoInitializeEx( nullptr, COINIT_APARTMENTTHREADED );
}
diff --git a/connectivity/source/drivers/ado/ADriver.cxx b/connectivity/source/drivers/ado/ADriver.cxx
index f8afdde..926a818 100644
--- a/connectivity/source/drivers/ado/ADriver.cxx
+++ b/connectivity/source/drivers/ado/ADriver.cxx
@@ -58,7 +58,7 @@ ODriver::ODriver(const css::uno::Reference< css::lang::XMultiServiceFactory >& _
ODriver::~ODriver()
{
CoUninitialize();
CoInitialize(nullptr);
CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
}
void ODriver::disposing()
diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx
index 8c92104..34bd685 100644
--- a/cui/source/options/optgdlg.cxx
+++ b/cui/source/options/optgdlg.cxx
@@ -473,7 +473,7 @@ IMPL_LINK_NOARG( OfaMiscTabPage, TwoFigureHdl, weld::SpinButton&, void )
#if defined(_WIN32)
IMPL_STATIC_LINK_NOARG(OfaMiscTabPage, FileAssocClick, weld::Button&, void)
{
const bool bUninit = SUCCEEDED(CoInitialize(nullptr));
const bool bUninit = SUCCEEDED(CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED));
IApplicationAssociationRegistrationUI* pIf = nullptr;
HRESULT res = CoCreateInstance(CLSID_ApplicationAssociationRegistrationUI, nullptr,
CLSCTX_INPROC_SERVER, IID_IApplicationAssociationRegistrationUI,
diff --git a/dbaccess/source/ui/dlg/adodatalinks.cxx b/dbaccess/source/ui/dlg/adodatalinks.cxx
index fa237ca..fc129b2 100644
--- a/dbaccess/source/ui/dlg/adodatalinks.cxx
+++ b/dbaccess/source/ui/dlg/adodatalinks.cxx
@@ -42,7 +42,7 @@ OUString PromptNew(long hWnd)
BSTR _result=nullptr;
// Initialize COM
::CoInitialize( nullptr );
::CoInitializeEx( nullptr, COINIT_APARTMENTTHREADED );
// Instantiate DataLinks object.
hr = CoCreateInstance(
@@ -96,7 +96,7 @@ OUString PromptEdit(long hWnd, OUString const & connstr)
BSTR _result=nullptr;
// Initialize COM
::CoInitialize( nullptr );
::CoInitializeEx( nullptr, COINIT_APARTMENTTHREADED );
hr = CoCreateInstance(CLSID_CADOConnection,
nullptr,
diff --git a/dtrans/source/win32/clipb/MtaOleClipb.cxx b/dtrans/source/win32/clipb/MtaOleClipb.cxx
index de966c3..2fdc2d7 100644
--- a/dtrans/source/win32/clipb/MtaOleClipb.cxx
+++ b/dtrans/source/win32/clipb/MtaOleClipb.cxx
@@ -179,14 +179,14 @@ class CAutoComInit
{
public:
/*
to be safe we call CoInitialize
to be safe we call CoInitializeEx
although it is not necessary if
the calling thread was created
using osl_CreateThread because
this function calls CoInitialize
this function calls CoInitializeEx
for every thread it creates
*/
CAutoComInit( ) : m_hResult( CoInitialize( nullptr ) )
CAutoComInit( ) : m_hResult( CoInitializeEx( nullptr, COINIT_APARTMENTTHREADED ) )
{
if ( S_OK == m_hResult )
OSL_FAIL(
diff --git a/dtrans/source/win32/workbench/test_wincb.cxx b/dtrans/source/win32/workbench/test_wincb.cxx
index 8a2f25f..96839e2 100644
--- a/dtrans/source/win32/workbench/test_wincb.cxx
+++ b/dtrans/source/win32/workbench/test_wincb.cxx
@@ -206,7 +206,7 @@ int SAL_CALL main( int nArgc, char* Argv[] )
// threaded apartment we need a message loop to deliver
// messages to our XTDataObject
//HRESULT hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
(void)CoInitialize( NULL );
(void)CoInitializeEx( NULL, COINIT_APARTMENTTHREADED );
char buff[6];
diff --git a/dtrans/test/win32/dnd/dndTest.cxx b/dtrans/test/win32/dnd/dndTest.cxx
index 3a022d9..2f2a7bc 100644
--- a/dtrans/test/win32/dnd/dndTest.cxx
+++ b/dtrans/test/win32/dnd/dndTest.cxx
@@ -56,9 +56,9 @@ Reference< XMultiServiceFactory > MultiServiceFactory;
int main( int argc, char *argv[ ], char *envp[ ] )
{
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL )))
if( FAILED( hr=CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
{
printf("CoInitialize failed \n");
printf("CoInitializeEx failed \n");
return -1;
}
diff --git a/extensions/source/config/WinUserInfo/WinUserInfoBe.cxx b/extensions/source/config/WinUserInfo/WinUserInfoBe.cxx
index a7732fa..f9ebaca 100644
--- a/extensions/source/config/WinUserInfo/WinUserInfoBe.cxx
+++ b/extensions/source/config/WinUserInfo/WinUserInfoBe.cxx
@@ -92,7 +92,7 @@ public:
{
CoInitializeGuard()
{
if (FAILED(CoInitialize(nullptr)))
if (FAILED(CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED)))
throw css::uno::RuntimeException();
}
~CoInitializeGuard() { CoUninitialize(); }
diff --git a/extensions/source/update/check/updatecheck.cxx b/extensions/source/update/check/updatecheck.cxx
index ad7251d..a4e18c1 100644
--- a/extensions/source/update/check/updatecheck.cxx
+++ b/extensions/source/update/check/updatecheck.cxx
@@ -585,7 +585,7 @@ DownloadThread::run()
#ifdef _WIN32
CoUninitialize();
CoInitialize( nullptr );
CoInitializeEx( nullptr, COINIT_APARTMENTTHREADED );
#endif
while( schedule() )
diff --git a/extensions/test/ole/OleClient/clientTest.cxx b/extensions/test/ole/OleClient/clientTest.cxx
index 675b2a6..00a7803 100644
--- a/extensions/test/ole/OleClient/clientTest.cxx
+++ b/extensions/test/ole/OleClient/clientTest.cxx
@@ -72,9 +72,9 @@ void printSequence( Sequence<Any>& val);
extern "C" int SAL_CALL main( int , char **)
{
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL)))
if( FAILED( hr=CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
{
_tprintf(_T("CoInitialize failed \n"));
_tprintf(_T("CoInitializeEx failed \n"));
return -1;
}
diff --git a/extensions/test/ole/OleConverterVar1/convTest.cxx b/extensions/test/ole/OleConverterVar1/convTest.cxx
index c0acc31..8fc2717 100644
--- a/extensions/test/ole/OleConverterVar1/convTest.cxx
+++ b/extensions/test/ole/OleConverterVar1/convTest.cxx
@@ -65,9 +65,9 @@ void printVariant( VARIANT & var);
int SAL_CALL main( int argc, char* argv[] )
{
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL)))
if( FAILED( hr=CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
{
printf("CoInitialize failed \n");
printf("CoInitializeEx failed \n");
return -1;
}
diff --git a/extensions/test/ole/cppToUno/testcppuno.cxx b/extensions/test/ole/cppToUno/testcppuno.cxx
index 563e2d0..e64541e 100644
--- a/extensions/test/ole/cppToUno/testcppuno.cxx
+++ b/extensions/test/ole/cppToUno/testcppuno.cxx
@@ -51,9 +51,9 @@ bool incrementMultidimensionalIndex(
int SAL_CALL main( int /*argc*/, char** /*argv*/ )
{
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL)))
if( FAILED( hr=CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
{
printf("CoInitialize failed \n");
printf("CoInitializeEx failed \n");
return -1;
}
diff --git a/extensions/test/ole/cpptest/cpptest.cxx b/extensions/test/ole/cpptest/cpptest.cxx
index d9748984..ec15925 100644
--- a/extensions/test/ole/cpptest/cpptest.cxx
+++ b/extensions/test/ole/cpptest/cpptest.cxx
@@ -33,7 +33,7 @@ HRESULT doTest();
int main(int /*argc*/, char** /*argv*/)
{
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL)))
if( FAILED( hr=CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
{
printf("CoInitialize failed \n");
return -1;
diff --git a/extensions/test/ole/unoTocomCalls/Test/Test.cpp b/extensions/test/ole/unoTocomCalls/Test/Test.cpp
index afed02a..b10900d 100644
--- a/extensions/test/ole/unoTocomCalls/Test/Test.cpp
+++ b/extensions/test/ole/unoTocomCalls/Test/Test.cpp
@@ -32,9 +32,9 @@ HRESULT doTest();
int main(int argc, char* argv[])
{
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL)))
if( FAILED( hr=CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
{
_tprintf(_T("CoInitialize failed \n"));
_tprintf(_T("CoInitializeEx failed \n"));
return -1;
}
diff --git a/fpicker/source/win32/VistaFilePickerImpl.cxx b/fpicker/source/win32/VistaFilePickerImpl.cxx
index b482912..c84fe5f 100644
--- a/fpicker/source/win32/VistaFilePickerImpl.cxx
+++ b/fpicker/source/win32/VistaFilePickerImpl.cxx
@@ -209,7 +209,7 @@ void VistaFilePickerImpl::before()
// by VCL and UNO so. There is no way to change that from outside...
// but we need a STA environment...
// So we make it by try-and-error...
// If first CoInitialize will fail... we uninitialize COM initialize it new .-)
// If first CoInitializeEx will fail... we uninitialize COM initialize it new .-)
m_hLastResult = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
if ( FAILED(m_hLastResult) )
diff --git a/shell/source/win32/SysShExec.cxx b/shell/source/win32/SysShExec.cxx
index 874c4f5..93eeaee 100644
--- a/shell/source/win32/SysShExec.cxx
+++ b/shell/source/win32/SysShExec.cxx
@@ -156,7 +156,7 @@ CSysShExec::CSysShExec( const css::uno::Reference< css::uno::XComponentContext >
* Once this changed, we can remove the uninitialize call.
*/
CoUninitialize();
CoInitialize( nullptr );
CoInitializeEx( nullptr, COINIT_APARTMENTTHREADED );
}
namespace
diff --git a/vcl/win/app/salinst.cxx b/vcl/win/app/salinst.cxx
index 179a1342..5ebb222 100644
--- a/vcl/win/app/salinst.cxx
+++ b/vcl/win/app/salinst.cxx
@@ -310,7 +310,7 @@ SalData::SalData()
SetSalData( this );
initNWF();
CoInitialize(nullptr); // put main thread in Single Threaded Apartment (STA)
CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); // put main thread in Single Threaded Apartment (STA)
static Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, nullptr);
}