[vlc-devel] [PATCH] Qt4: use MTA apartment for COM (probably fixes #6880)

Rémi Denis-Courmont remi at remlab.net
Thu Oct 4 17:19:22 CEST 2012


---
 modules/access/dshow/dshow.cpp                    |    6 ++++--
 modules/gui/qt4/components/simple_preferences.cpp |    2 +-
 modules/gui/qt4/main_interface_win32.cpp          |    2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/modules/access/dshow/dshow.cpp b/modules/access/dshow/dshow.cpp
index d44aa2c..05b476c 100644
--- a/modules/access/dshow/dshow.cpp
+++ b/modules/access/dshow/dshow.cpp
@@ -2015,7 +2015,8 @@ static int FindDevices( vlc_object_t *p_this, const char *psz_name,
 {
     /* Find list of devices */
     list<string> list_devices;
-    if( SUCCEEDED(CoInitializeEx( NULL, COINIT_APARTMENTTHREADED )) )
+    if( SUCCEEDED(CoInitializeEx( NULL, COINIT_MULTITTHREADED ))
+     || SUCCEEDED(CoInitializeEx( NULL, COINIT_APARTMENTTHREADED )) )
     {
         bool b_audio = !strcmp( psz_name, CFG_PREFIX "adev" );
 
@@ -2055,7 +2056,8 @@ static int ConfigDevicesCallback( vlc_object_t *p_this, char const *psz_name,
     char *psz_device = NULL;
     int i_ret = VLC_SUCCESS;
 
-    if( FAILED(CoInitializeEx( NULL, COINIT_APARTMENTTHREADED )) )
+    if( FAILED(CoInitializeEx( NULL, COINIT_MULTITTHREADED ))
+     && FAILED(CoInitializeEx( NULL, COINIT_APARTMENTTHREADED )) )
         return VLC_EGENERIC;
 
     if( !EMPTY_STR( newval.psz_string ) )
diff --git a/modules/gui/qt4/components/simple_preferences.cpp b/modules/gui/qt4/components/simple_preferences.cpp
index c19b30a..0c077df 100644
--- a/modules/gui/qt4/components/simple_preferences.cpp
+++ b/modules/gui/qt4/components/simple_preferences.cpp
@@ -935,7 +935,7 @@ bool SPrefsPanel::addType( const char * psz_ext, QTreeWidgetItem* current,
 void SPrefsPanel::assoDialog()
 {
     IApplicationAssociationRegistrationUI *p_appassoc;
-    CoInitializeEx( NULL, COINIT_APARTMENTTHREADED );
+    CoInitializeEx( NULL, COINIT_MULTITTHREADED );
 
     if( S_OK == CoCreateInstance(CLSID_ApplicationAssociationRegistrationUI,
                 NULL, CLSCTX_INPROC_SERVER,
diff --git a/modules/gui/qt4/main_interface_win32.cpp b/modules/gui/qt4/main_interface_win32.cpp
index 5623cdd..42a9135 100644
--- a/modules/gui/qt4/main_interface_win32.cpp
+++ b/modules/gui/qt4/main_interface_win32.cpp
@@ -79,7 +79,7 @@ void MainInterface::createTaskBarButtons()
     FIXME:the play button's picture doesn't changed to pause when clicked
     */
 
-    CoInitializeEx( NULL, COINIT_APARTMENTTHREADED );
+    CoInitializeEx( NULL, COINIT_MULTITHREADED );
 
     if( S_OK == CoCreateInstance( CLSID_TaskbarList,
                 NULL, CLSCTX_INPROC_SERVER,
-- 
1.7.10.4




More information about the vlc-devel mailing list