summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2018-02-17 07:11:20 -0800
committerLen Ovens <len@ovenwerks.net>2018-02-18 09:16:16 -0800
commit66fa0778abcb08026a9f0eabfecbe44ae5dbdd76 (patch)
treed042561d960a617a89bdda42c06cbb47052e6332 /libs
parent0b3026d388c13677c7ba6afbf2ef9770d6ad0dac (diff)
OSC: Allow surface to change route comment.
Diffstat (limited to 'libs')
-rw-r--r--libs/surfaces/osc/osc.cc27
-rw-r--r--libs/surfaces/osc/osc.h2
2 files changed, 29 insertions, 0 deletions
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 784946f9d6..fe4b7c45ba 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -569,6 +569,7 @@ OSC::register_callbacks()
REGISTER_CALLBACK (serv, X_("/select/recenable"), "i", sel_recenable);
REGISTER_CALLBACK (serv, X_("/select/record_safe"), "i", sel_recsafe);
REGISTER_CALLBACK (serv, X_("/select/name"), "s", sel_rename);
+ REGISTER_CALLBACK (serv, X_("/select/comment"), "s", sel_comment);
REGISTER_CALLBACK (serv, X_("/select/group"), "s", sel_group);
REGISTER_CALLBACK (serv, X_("/select/mute"), "i", sel_mute);
REGISTER_CALLBACK (serv, X_("/select/solo"), "i", sel_solo);
@@ -3726,6 +3727,31 @@ OSC::sel_rename (char *newname, lo_message msg) {
}
int
+OSC::sel_comment (char *newcomment, lo_message msg) {
+ if (!session) {
+ return -1;
+ }
+
+ OSCSurface *sur = get_surface(get_address (msg));
+ boost::shared_ptr<Stripable> s;
+ if (sur->expand_enable) {
+ s = get_strip (sur->expand, get_address (msg));
+ } else {
+ s = _select;
+ }
+ if (s) {
+ boost::shared_ptr<Route> rt = boost::dynamic_pointer_cast<Route> (s);
+ if (!rt) {
+ PBD::warning << "OSC: can not set comment on VCAs." << endmsg;
+ return -1;
+ }
+ rt->set_comment (newcomment, this);
+ }
+
+ return 0;
+}
+
+int
OSC::strip_group (int ssid, char *group, lo_message msg) {
if (!session) {
return -1;
@@ -3760,6 +3786,7 @@ OSC::strip_select_group (boost::shared_ptr<Stripable> s, char *group)
if (s) {
boost::shared_ptr<Route> rt = boost::dynamic_pointer_cast<Route> (s);
if (!rt) {
+ PBD::warning << "OSC: VCAs can not be part of a group." << endmsg;
return -1;
}
RouteGroup *rg = rt->route_group();
diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h
index 45daead1a8..57f0bc9e5a 100644
--- a/libs/surfaces/osc/osc.h
+++ b/libs/surfaces/osc/osc.h
@@ -495,6 +495,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
PATH_CALLBACK1_MSG(use_group,f);
PATH_CALLBACK1_MSG_s(sel_group,s);
PATH_CALLBACK1_MSG_s(sel_rename,s);
+ PATH_CALLBACK1_MSG_s(sel_comment,s);
PATH_CALLBACK1_MSG(sel_recenable,i);
PATH_CALLBACK1_MSG(sel_recsafe,i);
PATH_CALLBACK1_MSG(sel_mute,i);
@@ -718,6 +719,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
int monitor_set_mono (uint32_t state);
int sel_group (char *g, lo_message msg);
int sel_rename (char *n, lo_message msg);
+ int sel_comment (char *c, lo_message msg);
int sel_recenable (uint32_t state, lo_message msg);
int sel_recsafe (uint32_t state, lo_message msg);
int sel_mute (uint32_t state, lo_message msg);