summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2016-11-27 20:52:14 -0800
committerLen Ovens <len@ovenwerks.net>2016-11-27 20:52:14 -0800
commit2614b0df43b4dc5d339f087501b003bb1d689684 (patch)
treeb990d43e055e49c0c60c6b5b17ba34694d445ec9
parente9eea8de9d13b43ad236e5f1623c1139311f5f1b (diff)
OSC: Solo toggle should maintain state when locked, rec and rec_safe should show true state.
-rw-r--r--libs/surfaces/osc/osc.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index a9168c29e0..f698dba9c8 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -1950,7 +1950,7 @@ OSC::route_solo (int ssid, int yn, lo_message msg)
if (s) {
if (s->solo_control()) {
s->solo_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup);
- return 0;
+ return route_send_fail ("solo", ssid, (float) s->solo_control()->get_value(), get_address (msg));
}
}
@@ -2002,7 +2002,7 @@ 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 0;
+ return sel_fail ("solo", (float) s->solo_control()->get_value(), get_address (msg));
}
}
return sel_fail ("solo", 0, get_address (msg));
@@ -2059,7 +2059,9 @@ OSC::sel_recenable (uint32_t yn, lo_message msg)
if (s) {
if (s->rec_enable_control()) {
s->rec_enable_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup);
- return 0;
+ if (s->rec_enable_control()->get_value()) {
+ return 0;
+ }
}
}
return sel_fail ("recenable", 0, get_address (msg));
@@ -2110,7 +2112,9 @@ OSC::sel_recsafe (uint32_t yn, lo_message msg)
if (s) {
if (s->rec_safe_control()) {
s->rec_safe_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup);
- return 0;
+ if (s->rec_safe_control()->get_value()) {
+ return 0;
+ }
}
}
return sel_fail ("record_safe", 0, get_address (msg));