summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-02-17 03:58:51 +0100
committerRobin Gareus <robin@gareus.org>2017-02-17 03:58:51 +0100
commit9d8829f5bfb13776795437cc104be4d8741b86d6 (patch)
treec5fcc599119b2048ba28eb91eeda744868697f32 /libs
parentfef0739a1073c9ef1ef80e6980271a0aab56f080 (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.cc3
-rw-r--r--libs/surfaces/faderport/operations.cc2
-rw-r--r--libs/surfaces/osc/osc.cc4
-rw-r--r--libs/surfaces/push2/mix.cc2
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);
}
}
}