diff options
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index fc6cc4b633..43883f7fc6 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -183,6 +183,7 @@ Session::Session (AudioEngine &eng, , _worst_track_latency (0) , _have_captured (false) , _non_soloed_outs_muted (false) + , _listening (false) , _listen_cnt (0) , _solo_isolated_cnt (0) , _writable (false) @@ -3740,6 +3741,7 @@ Session::update_route_solo_state (boost::shared_ptr<RouteList> r) /* now figure out if anything that matters is soloed (or is "listening")*/ bool something_soloed = false; + bool something_listening = false; uint32_t listeners = 0; uint32_t isolated = 0; @@ -3755,7 +3757,7 @@ Session::update_route_solo_state (boost::shared_ptr<RouteList> r) if (!(*i)->is_auditioner() && (*i)->listening_via_monitor()) { if (Config->get_solo_control_is_listen_control()) { listeners++; - something_soloed = true; + something_listening = true; } else { (*i)->set_listen (false, this); } @@ -3771,6 +3773,11 @@ Session::update_route_solo_state (boost::shared_ptr<RouteList> r) SoloActive (_non_soloed_outs_muted); /* EMIT SIGNAL */ } + if (something_listening != _listening) { + _listening = something_listening; + SoloActive (_listening); + } + _listen_cnt = listeners; if (isolated != _solo_isolated_cnt) { |