summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-01-24 19:17:13 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-01-24 19:17:13 -0500
commit0b5ceaca4eb173d42766bd9438918628ca495a35 (patch)
treed524fc46ff5438fe6b3790d184a54aea8ba623e6
parentab3ec791eaaa751cec5906a5e581024c0f391b0e (diff)
add handler for, and connect to, Session::SaveSessionRequested
-rw-r--r--gtk2_ardour/ardour_ui.cc7
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc1
3 files changed, 9 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 2c5a8f3ce0..fb3ed4fd02 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -677,6 +677,13 @@ ARDOUR_UI::get_transport_controllable_state ()
return *node;
}
+void
+ARDOUR_UI::save_session_at_its_request (std::string snapshot_name)
+{
+ if (_session) {
+ _session->save_state (snapshot_name);
+ }
+}
gint
ARDOUR_UI::autosave_session ()
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index a2e492970a..e6de9399c8 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -346,6 +346,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
int ask_about_saving_session (const std::vector<std::string>& actions);
+ void save_session_at_its_request (std::string);
/* periodic safety backup, to be precise */
gint autosave_session();
void update_autosave();
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index b9789f3425..d5cbeeef11 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -148,6 +148,7 @@ ARDOUR_UI::set_session (Session *s)
blink_connection = Timers::blink_connect (sigc::mem_fun(*this, &ARDOUR_UI::blink_handler));
+ _session->SaveSessionRequested.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::save_session_at_its_request, this, _1), gui_context());
_session->RecordStateChanged.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::record_state_changed, this), gui_context());
_session->StepEditStatusChange.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::step_edit_status_change, this, _1), gui_context());
_session->TransportStateChange.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::map_transport_state, this), gui_context());