Commit f83dc64e authored by Jean-Philippe André's avatar Jean-Philippe André Committed by 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: default avatarPierre Ynard <linkfanel@yahoo.fr>
parent c62f3fbc
...@@ -121,8 +121,8 @@ ExtensionDialog* ExtensionsDialogProvider::UpdateExtDialog( ...@@ -121,8 +121,8 @@ ExtensionDialog* ExtensionsDialogProvider::UpdateExtDialog(
dialog->has_lock = true; dialog->has_lock = true;
dialog->UpdateWidgets(); dialog->UpdateWidgets();
if( strcmp( qtu( dialog->windowTitle() ), if( strcmp( qtu( dialog->windowTitle() ),
p_dialog->psz_title ) != 0 ) p_dialog->psz_title ) != 0 )
dialog->setWindowTitle( qfu( p_dialog->psz_title ) ); dialog->setWindowTitle( qfu( p_dialog->psz_title ) );
dialog->has_lock = false; dialog->has_lock = false;
dialog->setVisible( !p_dialog->b_hide ); dialog->setVisible( !p_dialog->b_hide );
} }
...@@ -207,11 +207,6 @@ ExtensionDialog::ExtensionDialog( intf_thread_t *_p_intf, ...@@ -207,11 +207,6 @@ ExtensionDialog::ExtensionDialog( intf_thread_t *_p_intf,
ExtensionDialog::~ExtensionDialog() ExtensionDialog::~ExtensionDialog()
{ {
msg_Dbg( p_intf, "Deleting extension dialog '%s'", qtu(windowTitle()) ); 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 ) QWidget* ExtensionDialog::CreateWidget( extension_widget_t *p_widget )
......
...@@ -118,11 +118,10 @@ void ExtensionsManager::unloadExtensions() ...@@ -118,11 +118,10 @@ void ExtensionsManager::unloadExtensions()
if( !p_extensions_manager ) if( !p_extensions_manager )
return; return;
b_unloading = true; b_unloading = true;
ExtensionsDialogProvider::killInstance();
module_unneed( p_extensions_manager, p_extensions_manager->p_module ); module_unneed( p_extensions_manager, p_extensions_manager->p_module );
vlc_object_release( p_extensions_manager ); vlc_object_release( p_extensions_manager );
p_extensions_manager = NULL; p_extensions_manager = NULL;
emit extensionsUpdated();
ExtensionsDialogProvider::killInstance();
} }
void ExtensionsManager::reloadExtensions() void ExtensionsManager::reloadExtensions()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment