From e94e7b6dc75a454e278a968ca9166a42643b8a57 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 23 Feb 2024 17:04:25 +0100 Subject: [PATCH] Vapor: keep session config and UI action in sync --- gtk2_ardour/mixer_ui.cc | 17 +++++++++++++++++ gtk2_ardour/mixer_ui.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 4a48a17e88..44d98ff91d 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -1311,6 +1311,7 @@ Mixer_UI::set_session (Session* sess) _session->config.ParameterChanged.connect (_session_connections, invalidator (*this), boost::bind (&Mixer_UI::parameter_changed, this, _1), gui_context()); _session->DirtyChanged.connect (_session_connections, invalidator (*this), boost::bind (&Mixer_UI::update_title, this), gui_context()); _session->StateSaved.connect (_session_connections, invalidator (*this), boost::bind (&Mixer_UI::update_title, this), gui_context()); + _session->SurroundMasterAddedOrRemoved.connect (_session_connections, invalidator (*this), boost::bind (&Mixer_UI::sync_surround_action, this), gui_context()); _session->vca_manager().VCAAdded.connect (_session_connections, invalidator (*this), boost::bind (&Mixer_UI::add_masters, this, _1), gui_context()); _session->vca_manager().VCACreated.connect (_session_connections, invalidator (*this), boost::bind (&Mixer_UI::new_masters_created, this), gui_context()); @@ -4411,3 +4412,19 @@ Mixer_UI::toggle_surround_master () Glib::RefPtr surround_export = ActionManager::get_action (X_("Main"), X_("SurroundExport")); surround_export->set_sensitive (have_sm && _session->vapor_export_barrier ()); } + +void +Mixer_UI::sync_surround_action () +{ + RefPtr act = ActionManager::get_toggle_action (X_("Mixer"), "ToggleSurroundMaster"); + if (_session->config.get_use_surround_master () == act->get_active ()) { + return; + } + + bool have_sm = _session->surround_master () != nullptr; + + act->set_active (have_sm); + + Glib::RefPtr surround_export = ActionManager::get_action (X_("Main"), X_("SurroundExport")); + surround_export->set_sensitive (have_sm && _session->vapor_export_barrier ()); +} diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index e9e21cf795..c8409e04ef 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -436,6 +436,8 @@ private: void monitor_section_attached (); void monitor_section_detached (); + void sync_surround_action (); + enum PluginListMode { PLM_Favorite, PLM_Recent,