]> git.sesse.net Git - vlc/commitdiff
Fix Qt crash on exit
authorClément Stenac <zorglub@videolan.org>
Sat, 16 Sep 2006 20:34:01 +0000 (20:34 +0000)
committerClément Stenac <zorglub@videolan.org>
Sat, 16 Sep 2006 20:34:01 +0000 (20:34 +0000)
modules/gui/qt4/dialogs/playlist.hpp
modules/gui/qt4/dialogs_provider.cpp
modules/gui/qt4/dialogs_provider.hpp
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/qt4.cpp

index d3ce6e26d5e1b48c4699af885616404b265a6962..5e1adf7c81dc03494d70bc0a6d9e32db7fd4067d 100644 (file)
@@ -39,6 +39,7 @@ public:
         if( !instance) instance = new PlaylistDialog( p_intf );
         return instance;
     }
+    static void killInstance() { if( instance ) delete instance; }
     virtual ~PlaylistDialog();
 private:
 
index e35e70a501dddabb5e774d6b5f57169ac345c4f7..c917a3f9dc3d7be9ebc566bf32ac07c65586a3a5 100644 (file)
@@ -52,6 +52,11 @@ DialogsProvider::DialogsProvider( intf_thread_t *_p_intf ) :
              this, menuUpdateAction( QObject *) );
 }
 
+DialogsProvider::~DialogsProvider()
+{
+    PlaylistDialog::killInstance();
+}
+
 void DialogsProvider::customEvent( QEvent *event )
 {
     if( event->type() == DialogEvent_Type )
index 4ef23629bcb369e6406a56b235391385f0d0cf43..da54ebe2b9e868c37ad508eb6ae65eca39fdf1bb 100644 (file)
@@ -52,7 +52,8 @@ public:
             instance = new DialogsProvider( p_intf );
         return instance;
     }
-    virtual ~DialogsProvider() {};
+    static void killInstance() { if( instance ) delete instance; }
+    virtual ~DialogsProvider();
     QTimer *fixed_timer;
 protected:
     friend class QVLCMenu;
index 3a0a5ad34af287d125f3864db60a4f9cd00687a6..b9d3d8f41cae84d5819a9e21e3ef0ef7651fea9c 100644 (file)
@@ -276,6 +276,8 @@ void MainInterface::updateOnTimer()
 {
     if( p_intf->b_die )
     {
+        QApplication::closeAllWindows();
+        DialogsProvider::killInstance();
         QApplication::quit();
     }
     audio_volume_t i_volume;
index 5cb8a6eb20dc8688ceef6d6104e2f9b541084e52..824283b4af35ca42b708a286fca9978b8b96a210 100644 (file)
@@ -145,7 +145,6 @@ static void Init( intf_thread_t *p_intf )
 
     app->setQuitOnLastWindowClosed( false );
     app->exec();
- //   fprintf( stderr, "Qt execution terminated\n" );
     MainInputManager::killInstance();
     delete p_intf->p_sys->p_mi;
 }