From a2731364daadd2a1931c58fd709b80e45c2ab35a Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Kempf Date: Sat, 19 Jan 2008 03:52:25 +0000 Subject: [PATCH] Qt4 - Try to improve quitting of the application... Ref #1397 --- modules/gui/qt4/dialogs/open.hpp | 5 +++++ modules/gui/qt4/dialogs_provider.hpp | 2 +- modules/gui/qt4/input_manager.cpp | 9 ++++----- modules/gui/qt4/main_interface.cpp | 4 +--- modules/gui/qt4/qt4.cpp | 13 +++++++++++-- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/modules/gui/qt4/dialogs/open.hpp b/modules/gui/qt4/dialogs/open.hpp index 7bdf45ffac..fa9e46f06e 100644 --- a/modules/gui/qt4/dialogs/open.hpp +++ b/modules/gui/qt4/dialogs/open.hpp @@ -42,6 +42,11 @@ public: static OpenDialog * getInstance( QWidget *parent, intf_thread_t *p_intf, int _action_flag = 0, bool modal = false ); + static void killInstance() + { + if( instance ) delete instance; + instance = NULL; + } virtual ~OpenDialog(); void showTab( int ); diff --git a/modules/gui/qt4/dialogs_provider.hpp b/modules/gui/qt4/dialogs_provider.hpp index 3a6b86fb6c..4776b002b1 100644 --- a/modules/gui/qt4/dialogs_provider.hpp +++ b/modules/gui/qt4/dialogs_provider.hpp @@ -112,7 +112,7 @@ public: static void killInstance() { if( instance ) delete instance; - instance=NULL; + instance = NULL; } virtual ~DialogsProvider(); QTimer *fixed_timer; diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp index 129d545fb3..4827a925ee 100644 --- a/modules/gui/qt4/input_manager.cpp +++ b/modules/gui/qt4/input_manager.cpp @@ -213,7 +213,6 @@ void InputManager::customEvent( QEvent *event ) delInput(); return; } - IMEvent *ime = static_cast(event); @@ -288,7 +287,7 @@ void InputManager::UpdateRate( void ) i_rate = i_new_rate; /* Update rate */ emit rateChanged( i_rate ); - } + } } void InputManager::UpdateMeta( void ) @@ -479,8 +478,8 @@ MainInputManager::MainInputManager( intf_thread_t *_p_intf ) : QObject(NULL), MainInputManager::~MainInputManager() { - if( p_input ) - { + if( p_input ) + { vlc_object_release( p_input ); emit inputChanged( NULL ); } @@ -500,7 +499,7 @@ void MainInputManager::customEvent( QEvent *event ) emit volumeChanged(); return; } - + if( VLC_OBJECT_INTF == p_intf->i_object_type ) { vlc_mutex_lock( &p_intf->change_lock ); diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index de9f8e2f1e..7ea393f475 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -1132,9 +1132,7 @@ void MainInterface::wheelEvent( QWheelEvent *e ) void MainInterface::closeEvent( QCloseEvent *e ) { hide(); - vlc_object_kill( p_intf ); - QApplication::closeAllWindows(); - QApplication::quit(); + THEDP->quit(); } /***************************************************************************** diff --git a/modules/gui/qt4/qt4.cpp b/modules/gui/qt4/qt4.cpp index 221e9cf94d..4db396fdf3 100644 --- a/modules/gui/qt4/qt4.cpp +++ b/modules/gui/qt4/qt4.cpp @@ -289,7 +289,6 @@ static void Init( intf_thread_t *p_intf ) p_mi->show(); } else - /*if( p_intf->pf_show_dialog )*/ vlc_thread_ready( p_intf ); #ifdef ENABLE_NLS @@ -327,8 +326,18 @@ static void Init( intf_thread_t *p_intf ) app->exec(); /* And quit */ - MainInputManager::killInstance(); + + /* Destroy first the main interface because it is connected to some slots + in the MainInputManager */ + if( p_intf->p_sys->p_mi ) delete p_intf->p_sys->p_mi; + + /* Destroy then other windows, because some are connected to some slots + in the MainInputManager */ DialogsProvider::killInstance(); + + /* Destroy the MainInputManager */ + MainInputManager::killInstance(); + delete app; } -- 2.39.2