[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:16:45 CEST 2010


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

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.
(cherry picked from commit 06e609ea922918f4d2d0f427049a236b4a4c08af)

Signed-off-by: Pierre Ynard <linkfanel at yahoo.fr>

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

 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