summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-03-12 22:58:00 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2016-05-31 15:30:40 -0400
commit194b213456df43cb522651db6f27286a48eadec6 (patch)
tree5b415907ecd38ad92b79834b56105a821ce961e1 /libs/ardour/route.cc
parent5531c834963726d5a35db078e17a7508f2b9d72d (diff)
add implicit mute state to MuteMaster and use when a master of a mute control is enabled/disabled. Add AutomationControl::master_changed() as a virtual method to handle ... master value changes
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r--libs/ardour/route.cc29
1 files changed, 18 insertions, 11 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index c9b9aff3ac..8207176729 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -924,14 +924,6 @@ Route::set_solo (bool yn, Controllable::GroupControlDisposition group_override)
}
assert (Config->get_solo_control_is_listen_control() || !_monitor_send || !_monitor_send->active());
-
- /* XXX TRACKS DEVELOPERS: THIS LOGIC SUGGESTS THAT YOU ARE NOT AWARE OF
- Config->get_solo_mute_overrride().
- */
-
- if (yn && Profile->get_trx()) {
- set_mute (false, Controllable::UseGroup);
- }
}
void
@@ -997,7 +989,8 @@ Route::mod_solo_by_others_upstream (int32_t delta)
}
set_mute_master_solo ();
- _solo_control->Changed (false, Controllable::UseGroup); /* EMIT SIGNAL */
+ cerr << name() << " SC->Changed (false, UseGroup)\n";
+ _solo_control->Changed (false, Controllable::NoGroup); /* EMIT SIGNAL */
}
void
@@ -1151,6 +1144,21 @@ Route::muted () const
}
bool
+Route::muted_by_others_soloing () const
+{
+ // This method is only used by route_ui for display state.
+ // The real thing is MuteMaster::muted_by_others_at()
+
+ //master is never muted by others
+ if (is_master())
+ return false;
+
+ //now check to see if something is soloed (and I am not)
+ //see also MuteMaster::mute_gain_at()
+ return _session.soloing() && !soloed() && !solo_isolated();
+}
+
+bool
Route::muted_by_others () const
{
// This method is only used by route_ui for display state.
@@ -1162,7 +1170,7 @@ Route::muted_by_others () const
//now check to see if something is soloed (and I am not)
//see also MuteMaster::mute_gain_at()
- return (_session.soloing() && !soloed() && !solo_isolated());
+ return _mute_master->muted_by_others() || (_session.soloing() && !soloed() && !solo_isolated());
}
#if 0
@@ -5910,6 +5918,5 @@ Route::vca_unassign (boost::shared_ptr<VCA> vca)
_gain_control->remove_master (vca->gain_control());
_solo_control->remove_master (vca->solo_control());
_mute_control->remove_master (vca->mute_control());
-
}
}