From e11ba7b79d68bc1070b170236c22123966d7bcc3 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 5 Oct 2015 14:19:32 +0200 Subject: SiP and "solo overrides mutes" tweak: Only Explicit solos should override mutes. --- libs/ardour/mute_master.cc | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'libs/ardour/mute_master.cc') 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)) { -- cgit v1.2.3