From 375abfd04ea2a1dfb1dcfee63e53aac0de8c87cd Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Wed, 16 Feb 2011 22:43:05 +0000 Subject: [PATCH] Don't exit application to fast, to allow fadeout --- src/engines/enginebase.h | 2 ++ src/engines/gstengine.cpp | 1 + src/ui/mainwindow.cpp | 12 +++++++++++- src/ui/mainwindow.h | 2 ++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/engines/enginebase.h b/src/engines/enginebase.h index 5f916f81b..9ce5421d7 100644 --- a/src/engines/enginebase.h +++ b/src/engines/enginebase.h @@ -97,6 +97,8 @@ class Base : public QObject, boost::noncopyable { void TrackEnded(); + void FadeoutFinishedSignal(); + void StatusText(const QString&); void Error(const QString&); diff --git a/src/engines/gstengine.cpp b/src/engines/gstengine.cpp index c3eaf121b..7abc5a18b 100644 --- a/src/engines/gstengine.cpp +++ b/src/engines/gstengine.cpp @@ -576,6 +576,7 @@ void GstEngine::Stop() { void GstEngine::FadeoutFinished() { fadeout_pipeline_.reset(); + emit FadeoutFinishedSignal(); } void GstEngine::Pause() { diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index f39277ced..84a83c685 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -298,7 +298,7 @@ MainWindow::MainWindow( connect(ui_->action_previous_track, SIGNAL(triggered()), player_, SLOT(Previous())); connect(ui_->action_play_pause, SIGNAL(triggered()), player_, SLOT(PlayPause())); connect(ui_->action_stop, SIGNAL(triggered()), player_, SLOT(Stop())); - connect(ui_->action_quit, SIGNAL(triggered()), qApp, SLOT(quit())); + connect(ui_->action_quit, SIGNAL(triggered()), SLOT(Exit())); connect(ui_->action_stop_after_this_track, SIGNAL(triggered()), SLOT(StopAfterCurrent())); connect(ui_->action_mute, SIGNAL(triggered()), player_, SLOT(Mute())); #ifdef HAVE_LIBLASTFM @@ -1751,3 +1751,13 @@ bool MainWindow::winEvent(MSG* msg, long*) { return false; } #endif // Q_OS_WIN32 + +void MainWindow::Exit() { + // To shut down the application when fadeout will be finished + connect(player_->engine(), SIGNAL(FadeoutFinishedSignal()), qApp, SLOT(quit())); + + player_->Stop(); + + hide(); + tray_icon_->SetVisible(false); +} diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 2e9fbc7af..079c84857 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -230,6 +230,8 @@ class MainWindow : public QMainWindow, public PlatformInterface { void Raise(); + void Exit(); + private: void ConnectInfoView(SongInfoBase* view);