diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-11-25 11:50:39 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-11-25 11:50:39 +0000 |
commit | 0d9030cee18b332206650df68428637dd159c3b2 (patch) | |
tree | a90ca244d7e7c1c6b600670286bb8fe9ae02cf95 /libs/ardour | |
parent | bb8ddc4322e376c9a5687feecfd74b0c2f59f7e2 (diff) |
make the session do the right thing when clearing solo state during non-loading conditions
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/session.cc | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 3bf61cac26..f9a6169363 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -6230,14 +6230,18 @@ void Session::solo_control_mode_changed () { if (soloing() || listening()) { - /* We can't use ::clear_all_solo_state() here because during - session loading at program startup, that will queue a call - to rt_clear_all_solo_state() that will not execute until - AFTER solo states have been established (thus throwing away - the session's saved solo state). So just explicitly turn - them all off. - */ - set_controls (route_list_to_control_list (get_routes(), &Stripable::solo_control), 0.0, Controllable::NoGroup); + if (loading()) { + /* We can't use ::clear_all_solo_state() here because during + session loading at program startup, that will queue a call + to rt_clear_all_solo_state() that will not execute until + AFTER solo states have been established (thus throwing away + the session's saved solo state). So just explicitly turn + them all off. + */ + set_controls (route_list_to_control_list (get_routes(), &Stripable::solo_control), 0.0, Controllable::NoGroup); + } else { + clear_all_solo_state (get_routes()); + } } } |