diff options
author | Robin Gareus <robin@gareus.org> | 2017-02-17 03:58:51 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-02-17 03:58:51 +0100 |
commit | 9d8829f5bfb13776795437cc104be4d8741b86d6 (patch) | |
tree | c5fcc599119b2048ba28eb91eeda744868697f32 /libs | |
parent | fef0739a1073c9ef1ef80e6980271a0aab56f080 (diff) |
Remove direct calls to set solo_control()
Changing solo-state needs to be done in rt-context to atomically
propagate solo/mute.
set_control() queues a rt-event, later Session::rt_set_control() calls
Session::update_route_solo_state() to propagate solo/mute.
Diffstat (limited to 'libs')
-rw-r--r-- | libs/surfaces/control_protocol/control_protocol.cc | 3 | ||||
-rw-r--r-- | libs/surfaces/faderport/operations.cc | 2 | ||||
-rw-r--r-- | libs/surfaces/osc/osc.cc | 4 | ||||
-rw-r--r-- | libs/surfaces/push2/mix.cc | 2 |
4 files changed, 6 insertions, 5 deletions
diff --git a/libs/surfaces/control_protocol/control_protocol.cc b/libs/surfaces/control_protocol/control_protocol.cc index 311c2d1081..36131e0b9e 100644 --- a/libs/surfaces/control_protocol/control_protocol.cc +++ b/libs/surfaces/control_protocol/control_protocol.cc @@ -295,7 +295,8 @@ ControlProtocol::route_set_soloed (uint32_t table_index, bool yn) boost::shared_ptr<Route> r = route_table[table_index]; if (r != 0) { - r->solo_control()->set_value (yn ? 1.0 : 0.0, Controllable::UseGroup); + r->solo_control()->set_value (yn ? 1.0 : 0.0, Controllable::UseGroup); // XXX does not propagate + //_session->set_control (r->solo_control(), yn ? 1.0 : 0.0, Controllable::UseGroup); // << correct way, needs a session ptr } } diff --git a/libs/surfaces/faderport/operations.cc b/libs/surfaces/faderport/operations.cc index 63f8c4b5f5..9a43aaea78 100644 --- a/libs/surfaces/faderport/operations.cc +++ b/libs/surfaces/faderport/operations.cc @@ -140,7 +140,7 @@ FaderPort::solo () return; } - _current_stripable->solo_control()->set_value (!_current_stripable->solo_control()->self_soloed(), PBD::Controllable::UseGroup); + session->set_control (_current_stripable->solo_control(), !_current_stripable->solo_control()->self_soloed(), PBD::Controllable::UseGroup); } void diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 2a4b1b7d99..c338999fb4 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -2003,8 +2003,8 @@ OSC::sel_solo (uint32_t yn, lo_message msg) } if (s) { if (s->solo_control()) { - s->solo_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); - return sel_fail ("solo", (float) s->solo_control()->get_value(), get_address (msg)); + session->set_control (s->solo_control(), yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); + return sel_fail ("solo", yn, get_address (msg)); } } return sel_fail ("solo", 0, get_address (msg)); diff --git a/libs/surfaces/push2/mix.cc b/libs/surfaces/push2/mix.cc index 7422c351ba..75b17f8c20 100644 --- a/libs/surfaces/push2/mix.cc +++ b/libs/surfaces/push2/mix.cc @@ -400,7 +400,7 @@ MixLayout::button_solo () if (s) { boost::shared_ptr<AutomationControl> ac = s->solo_control(); if (ac) { - ac->set_value (!ac->get_value(), PBD::Controllable::UseGroup); + session.set_control (ac, !ac->get_value(), PBD::Controllable::UseGroup); } } } |