summaryrefslogtreecommitdiff
path: root/libs/surfaces/osc/osc.cc
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2018-03-10 13:58:31 -0800
committerLen Ovens <len@ovenwerks.net>2018-03-12 16:03:53 -0700
commit74c4e4a6d8126ae1342e99377a3e9123858685c5 (patch)
tree46fa36a8c26d404e81b0dccf4782f0372eecd0af /libs/surfaces/osc/osc.cc
parent899641dfc578eb99da0207e09f9ef85fc30decca (diff)
OSC: group commands should feedback all off if no group
Diffstat (limited to 'libs/surfaces/osc/osc.cc')
-rw-r--r--libs/surfaces/osc/osc.cc110
1 files changed, 76 insertions, 34 deletions
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 6e38b88344..1d86bbcd32 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -2559,7 +2559,6 @@ OSC::parse_sel_group (const char *path, const char* types, lo_arg **argv, int ar
RouteGroup *rg = rt->route_group();
if (!rg) {
PBD::warning << "OSC: This strip is not part of a group." << endmsg;
- return ret;
}
float value = 0;
if (argc == 1) {
@@ -2569,13 +2568,10 @@ OSC::parse_sel_group (const char *path, const char* types, lo_arg **argv, int ar
value = (uint32_t) argv[0]->i;
}
}
- if (!strncmp (path, X_("/select/group/enable"), 20)) {
- if (argc == 1) {
- rg->set_active (value, this);
- ret = 0;
+ if (!strncmp (path, X_("/select/group/only"), 18)) {
+ if (!rg) {
+ return ret;
}
- }
- else if (!strncmp (path, X_("/select/group/only"), 18)) {
if ((argc == 1 && value) || !argc) {
// fill sur->strips with routes from this group and hit bank1
sur->temp_strips.clear();
@@ -2593,58 +2589,104 @@ OSC::parse_sel_group (const char *path, const char* types, lo_arg **argv, int ar
ret = 0;
}
}
+ else if (!strncmp (path, X_("/select/group/enable"), 20)) {
+ if (rg) {
+ if (argc == 1) {
+ rg->set_active (value, this);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/enable"), 0, get_address (msg));
+ }
+ }
else if (strcmp (path, X_("/select/group/gain")) == 0) {
- if (argc == 1) {
- rg->set_gain ((bool) value);
- ret = 0;
+ if (rg) {
+ if (argc == 1) {
+ rg->set_gain ((bool) value);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/gain"), 0, get_address (msg));
}
}
else if (strcmp (path, X_("/select/group/relative")) == 0) {
- if (argc == 1) {
- rg->set_relative ((bool) value, this);
- ret = 0;
+ if (rg) {
+ if (argc == 1) {
+ rg->set_relative ((bool) value, this);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/relative"), 0, get_address (msg));
}
}
else if (strcmp (path, X_("/select/group/mute")) == 0) {
- if (argc == 1) {
- rg->set_mute ((bool) value);
- ret = 0;
+ if (rg) {
+ if (argc == 1) {
+ rg->set_mute ((bool) value);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/mute"), 0, get_address (msg));
}
}
else if (strcmp (path, X_("/select/group/solo")) == 0) {
- if (argc == 1) {
- rg->set_solo ((bool) value);
- ret = 0;
+ if (rg) {
+ if (argc == 1) {
+ rg->set_solo ((bool) value);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/solo"), 0, get_address (msg));
}
}
else if (strcmp (path, X_("/select/group/recenable")) == 0) {
- if (argc == 1) {
- rg->set_recenable ((bool) value);
- ret = 0;
+ if (rg) {
+ if (argc == 1) {
+ rg->set_recenable ((bool) value);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/recenable"), 0, get_address (msg));
}
}
else if (strcmp (path, X_("/select/group/select")) == 0) {
- if (argc == 1) {
- rg->set_select ((bool) value);
- ret = 0;
+ if (rg) {
+ if (argc == 1) {
+ rg->set_select ((bool) value);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/select"), 0, get_address (msg));
}
}
else if (strcmp (path, X_("/select/group/active")) == 0) {
- if (argc == 1) {
- rg->set_route_active ((bool) value);
- ret = 0;
+ if (rg) {
+ if (argc == 1) {
+ rg->set_route_active ((bool) value);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/active"), 0, get_address (msg));
}
}
else if (strcmp (path, X_("/select/group/color")) == 0) {
- if (argc == 1) {
- rg->set_color ((bool) value);
- ret = 0;
+ if (rg) {
+ if (argc == 1) {
+ rg->set_color ((bool) value);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/color"), 0, get_address (msg));
}
}
else if (strcmp (path, X_("/select/group/monitoring")) == 0) {
- if (argc == 1) {
- rg->set_monitoring ((bool) value);
- ret = 0;
+ if (rg) {
+ if (argc == 1) {
+ rg->set_monitoring ((bool) value);
+ ret = 0;
+ }
+ } else {
+ int_message (X_("/select/group/monitoring"), 0, get_address (msg));
}
}
}