summaryrefslogtreecommitdiff
path: root/libs/ardour/solo_control.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/solo_control.cc')
-rw-r--r--libs/ardour/solo_control.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/libs/ardour/solo_control.cc b/libs/ardour/solo_control.cc
index 8514da36ec..f0dd07d628 100644
--- a/libs/ardour/solo_control.cc
+++ b/libs/ardour/solo_control.cc
@@ -177,8 +177,7 @@ double
SoloControl::get_value () const
{
if (slaved()) {
- Glib::Threads::RWLock::ReaderLock lm (master_lock);
- return get_masters_value_locked () ? 1.0 : 0.0;
+ return self_soloed() || get_masters_value ();
}
if (_list && boost::dynamic_pointer_cast<AutomationList>(_list)->automation_playback()) {
@@ -186,7 +185,7 @@ SoloControl::get_value () const
return AutomationControl::get_value();
}
- return soloed() ? 1.0 : 0.0;
+ return soloed();
}
void
@@ -257,6 +256,7 @@ SoloControl::master_changed (bool /*from self*/, GroupControlDisposition, boost:
_transition_into_solo = 0;
+
if (m->get_value()) {
/* this master is now enabled */
if (!self_soloed() && get_boolean_masters() == 0) {