[vlc-commits] commit: Extensions: fix Qt freeze when reloading scripts ( Jean-Philippe André )

git at videolan.org git at videolan.org
Wed Jun 2 19:09:25 CEST 2010


vlc | branch: master | Jean-Philippe André <jpeg at videolan.org> | Thu Jun  3 00:47:34 2010 +0800| [06e609ea922918f4d2d0f427049a236b4a4c08af] | committer: Jean-Philippe André 

Extensions: fix Qt freeze when reloading scripts

Description of the bug:

 This freeze happened only on Windows (tested on XP & Wine), but not on
 Linux. If I only moved up the "killInstance()" line, then the freeze
 would happen only on Linux but not on Windows.
 In these cases the QDialog's destructor never returned.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=06e609ea922918f4d2d0f427049a236b4a4c08af
---

 modules/gui/qt4/dialogs/extensions.cpp |    9 ++-------
 modules/gui/qt4/extensions_manager.cpp |    3 +--
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/modules/gui/qt4/dialogs/extensions.cpp b/modules/gui/qt4/dialogs/extensions.cpp
index d765c89..65bb775 100644
--- a/modules/gui/qt4/dialogs/extensions.cpp
+++ b/modules/gui/qt4/dialogs/extensions.cpp
@@ -121,8 +121,8 @@ ExtensionDialog* ExtensionsDialogProvider::UpdateExtDialog(
         dialog->has_lock = true;
         dialog->UpdateWidgets();
         if( strcmp( qtu( dialog->windowTitle() ),
-	            p_dialog->psz_title ) != 0 )
-	    dialog->setWindowTitle( qfu( p_dialog->psz_title ) );
+                    p_dialog->psz_title ) != 0 )
+            dialog->setWindowTitle( qfu( p_dialog->psz_title ) );
         dialog->has_lock = false;
         dialog->setVisible( !p_dialog->b_hide );
     }
@@ -207,11 +207,6 @@ ExtensionDialog::ExtensionDialog( intf_thread_t *_p_intf,
 ExtensionDialog::~ExtensionDialog()
 {
     msg_Dbg( p_intf, "Deleting extension dialog '%s'", qtu(windowTitle()) );
-    /* Delete all widgets */
-    extension_widget_t *p_widget;
-    p_dialog->b_kill = true;
-    p_dialog->p_sys_intf = NULL;
-    vlc_cond_signal( &p_dialog->cond );
 }
 
 QWidget* ExtensionDialog::CreateWidget( extension_widget_t *p_widget )
diff --git a/modules/gui/qt4/extensions_manager.cpp b/modules/gui/qt4/extensions_manager.cpp
index a272465..35589c8 100644
--- a/modules/gui/qt4/extensions_manager.cpp
+++ b/modules/gui/qt4/extensions_manager.cpp
@@ -118,11 +118,10 @@ void ExtensionsManager::unloadExtensions()
     if( !p_extensions_manager )
         return;
     b_unloading = true;
+    ExtensionsDialogProvider::killInstance();
     module_unneed( p_extensions_manager, p_extensions_manager->p_module );
     vlc_object_release( p_extensions_manager );
     p_extensions_manager = NULL;
-    emit extensionsUpdated();
-    ExtensionsDialogProvider::killInstance();
 }
 
 void ExtensionsManager::reloadExtensions()



More information about the vlc-commits mailing list