summaryrefslogtreecommitdiff
path: root/libs/ardour/mute_master.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-05-03 18:58:38 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-05-03 18:58:38 +0000
commite33d4553b2b333c30835b00741fc5c1fd0e2b36d (patch)
tree9bf8b6839f5078f1918113191689a0535ede52ae /libs/ardour/mute_master.cc
parent1b9bf21aa40eee32eb4c7ab49d1ad8ab51d09b11 (diff)
more solo model work, including a GUI fix for mute button state when the route is self-soloed
git-svn-id: svn://localhost/ardour2/branches/3.0@7048 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/mute_master.cc')
-rw-r--r--libs/ardour/mute_master.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/ardour/mute_master.cc b/libs/ardour/mute_master.cc
index df9a66ef7f..5e49a11875 100644
--- a/libs/ardour/mute_master.cc
+++ b/libs/ardour/mute_master.cc
@@ -40,6 +40,7 @@ MuteMaster::MuteMaster (Session& s, const std::string&)
, _mute_point (AllPoints)
, _self_muted (false)
, _muted_by_others (0)
+ , _solo_ignore (false)
{
}
@@ -107,7 +108,11 @@ MuteMaster::mute_gain_at (MutePoint mp) const
} else if (muted_by_others_at (mp)) { // muted by others
gain = Config->get_solo_mute_gain ();
} else {
- gain = 1.0;
+ if (!_solo_ignore && _session.soloing()) {
+ gain = 0.0;
+ } else {
+ gain = 1.0;
+ }
}
} else {
if (self_muted_at (mp)) { // self-muted
@@ -119,10 +124,14 @@ MuteMaster::mute_gain_at (MutePoint mp) const
} else if (l == UpstreamSoloed) { // soloed by others
gain = 1.0;
} else {
- gain = 1.0;
+ if (!_solo_ignore && _session.soloing()) {
+ gain = 0.0;
+ } else {
+ gain = 1.0;
+ }
}
}
-
+
// cerr << "\tgain = " << gain << endl;
return gain;