summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-10-07 12:12:16 +0000
committerCarl Hetherington <carl@carlh.net>2010-10-07 12:12:16 +0000
commit3b0c5e35411fdb1a22eae54c8c574668b62f9c56 (patch)
tree826ddc7b06531eb40bd793ce3fbfae7191d00942 /libs
parent2d082739873b49f291a288c3217a4f06ef6fde01 (diff)
Respond to JACK session quit request. Fixes #3491.
git-svn-id: svn://localhost/ardour2/branches/3.0@7878 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/session.h3
-rw-r--r--libs/ardour/session.cc1
-rw-r--r--libs/ardour/session_state.cc2
3 files changed, 5 insertions, 1 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 93d15b8439..d10e01d18f 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -785,6 +785,9 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
void request_resume_timecode_transmission ();
bool timecode_transmission_suspended () const;
+ /** Emitted when the session wants Ardour to quit */
+ static PBD::Signal0<void> Quit;
+
protected:
friend class AudioEngine;
void set_block_size (nframes_t nframes);
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index fb8649d1a0..8a3eb6a6c6 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -125,6 +125,7 @@ PBD::Signal0<void> Session::AutoBindingOn;
PBD::Signal0<void> Session::AutoBindingOff;
PBD::Signal2<void,std::string, std::string> Session::Exported;
PBD::Signal1<int,boost::shared_ptr<Playlist> > Session::AskAboutPlaylistDeletion;
+PBD::Signal0<void> Session::Quit;
static void clean_up_session_event (SessionEvent* ev) { delete ev; }
const SessionEvent::RTeventCallback Session::rt_cleanup (clean_up_session_event);
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index 097fd2a116..4ae4065329 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -746,7 +746,7 @@ Session::jack_session_event (jack_session_event_t * event)
jack_session_reply (_engine.jack(), event);
if (event->type == JackSessionSaveAndQuit) {
- // TODO: make ardour quit.
+ Quit (); /* EMIT SIGNAL */
}
jack_session_event_free( event );