From 0b5ceaca4eb173d42766bd9438918628ca495a35 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 24 Jan 2015 19:17:13 -0500 Subject: [PATCH] add handler for, and connect to, Session::SaveSessionRequested --- gtk2_ardour/ardour_ui.cc | 7 +++++++ gtk2_ardour/ardour_ui.h | 1 + gtk2_ardour/ardour_ui_dialogs.cc | 1 + 3 files changed, 9 insertions(+) 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& 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());