summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-11-25 11:50:39 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2016-11-25 11:50:39 +0000
commit0d9030cee18b332206650df68428637dd159c3b2 (patch)
treea90ca244d7e7c1c6b600670286bb8fe9ae02cf95 /libs/ardour
parentbb8ddc4322e376c9a5687feecfd74b0c2f59f7e2 (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.cc20
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());
+ }
}
}