summaryrefslogtreecommitdiff
path: root/gtk2_ardour/transport_masters_dialog.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-05-15 21:06:40 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2020-05-15 21:06:40 -0600
commita9fff59229baba194fce20a2dfd0e9cc16c100d2 (patch)
tree11b3560b132365b6a1c6c8298dbd27051502ec12 /gtk2_ardour/transport_masters_dialog.cc
parentc57df5a7e55b947d27f847f49dc278144614052f (diff)
TMM: do not allow changing transport master while slaved (GUI edition)
Diffstat (limited to 'gtk2_ardour/transport_masters_dialog.cc')
-rw-r--r--gtk2_ardour/transport_masters_dialog.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/gtk2_ardour/transport_masters_dialog.cc b/gtk2_ardour/transport_masters_dialog.cc
index bb6c6d618e..bf1bb16bf6 100644
--- a/gtk2_ardour/transport_masters_dialog.cc
+++ b/gtk2_ardour/transport_masters_dialog.cc
@@ -715,6 +715,19 @@ TransportMastersWindow::set_session (ARDOUR::Session* s)
w.set_session (s);
}
+void
+TransportMastersWidget::set_session (ARDOUR::Session* s)
+{
+ session_config_connection.disconnect ();
+
+ SessionHandlePtr::set_session (s);
+
+ if (_session) {
+ _session->config.ParameterChanged.connect (session_config_connection, invalidator (*this), boost::bind (&TransportMastersWidget::param_changed, this, _1), gui_context());
+ allow_master_select (!_session->config.get_external_sync());
+ }
+}
+
TransportMastersWidget::AddTransportMasterDialog::AddTransportMasterDialog ()
: ArdourDialog (_("Add Transport Master"), true, false)
, name_label (_("Name"))
@@ -791,5 +804,17 @@ TransportMastersWidget::param_changed (string const & p)
{
if (p == "transport-masters-just_roll-when-sync-lost") {
lost_sync_changed ();
+ } else if (p == "external-sync") {
+ if (_session) {
+ allow_master_select (!_session->config.get_external_sync());
+ }
+ }
+}
+
+void
+TransportMastersWidget::allow_master_select (bool yn)
+{
+ for (vector<Row*>::iterator r = rows.begin(); r != rows.end(); ++r) {
+ (*r)->use_button.set_sensitive (yn);
}
}