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);
}