diff options
author | Robin Gareus <robin@gareus.org> | 2015-10-05 14:19:32 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-10-05 14:19:32 +0200 |
commit | e11ba7b79d68bc1070b170236c22123966d7bcc3 (patch) | |
tree | 496d95bf15d879c7e16b1130d5402df1ad55ad98 /libs/ardour/mute_master.cc | |
parent | f42ae066cc98359a9d2861b83c68dd102748fdcf (diff) |
SiP and "solo overrides mutes" tweak:
Only Explicit solos should override mutes.
Diffstat (limited to 'libs/ardour/mute_master.cc')
-rw-r--r-- | libs/ardour/mute_master.cc | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/libs/ardour/mute_master.cc b/libs/ardour/mute_master.cc index 4c23855915..8f81a5e672 100644 --- a/libs/ardour/mute_master.cc +++ b/libs/ardour/mute_master.cc @@ -38,7 +38,8 @@ MuteMaster::MuteMaster (Session& s, const std::string&) : SessionHandleRef (s) , _mute_point (MutePoint (0)) , _muted_by_self (false) - , _soloed (false) + , _soloed_by_self (false) + , _soloed_by_others (false) , _solo_ignore (false) { @@ -77,24 +78,18 @@ MuteMaster::unmute_at (MutePoint mp) } } -void -MuteMaster::set_soloed (bool yn) -{ - _soloed = yn; -} - gain_t MuteMaster::mute_gain_at (MutePoint mp) const { gain_t gain; if (Config->get_solo_mute_override()) { - if (_soloed) { + if (_soloed_by_self) { gain = GAIN_COEFF_UNITY; } else if (muted_by_self_at (mp)) { gain = GAIN_COEFF_ZERO; } else { - if (muted_by_others_at (mp)) { + if (muted_by_others_at (mp) && !_soloed_by_others) { gain = Config->get_solo_mute_gain (); } else { gain = GAIN_COEFF_UNITY; @@ -103,7 +98,7 @@ MuteMaster::mute_gain_at (MutePoint mp) const } else { if (muted_by_self_at (mp)) { gain = GAIN_COEFF_ZERO; - } else if (_soloed) { + } else if (_soloed_by_self || _soloed_by_others) { gain = GAIN_COEFF_UNITY; } else { if (muted_by_others_at (mp)) { |