X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fosc%2Fosc.cc;h=14cdf04bd8416392a64129e0c1f714a699bb01d0;hb=a9d041c62ef209c861a41dd65e39ad62058fd523;hp=784946f9d6b5abb120d9a94598ecbcb57dd28ee8;hpb=a29d3c1b3137cb44227d82ee11e93a81b6150b1c;p=ardour.git diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 784946f9d6..14cdf04bd8 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); @@ -2931,13 +2932,24 @@ OSC::set_marker (const char* types, lo_arg **argv, int argc, lo_message msg) switch (types[0]) { case 's': - for (Locations::LocationList::const_iterator l = ll.begin(); l != ll.end(); ++l) { - if ((*l)->is_mark ()) { - if (strcmp (&argv[0]->s, (*l)->name().c_str()) == 0) { - session->request_locate ((*l)->start (), false); - return 0; + { + Location *cur_mark = 0; + for (Locations::LocationList::const_iterator l = ll.begin(); l != ll.end(); ++l) { + if ((*l)->is_mark ()) { + if (strcmp (&argv[0]->s, (*l)->name().c_str()) == 0) { + session->request_locate ((*l)->start (), false); + return 0; + } else if ((*l)->start () == session->transport_sample()) { + cur_mark = (*l); + } } } + if (cur_mark) { + cur_mark->set_name (&argv[0]->s); + return 0; + } + PBD::warning << string_compose ("Marker: \"%1\" - does not exist", &argv[0]->s) << endmsg; + return -1; } break; case 'i': @@ -2978,7 +2990,6 @@ OSC::group_list (lo_message msg) int OSC::send_group_list (lo_address addr) { - //std::list const & route_groups () const { lo_message reply; reply = lo_message_new (); @@ -3725,6 +3736,31 @@ OSC::sel_rename (char *newname, lo_message msg) { return 0; } +int +OSC::sel_comment (char *newcomment, lo_message msg) { + if (!session) { + return -1; + } + + OSCSurface *sur = get_surface(get_address (msg)); + boost::shared_ptr s; + if (sur->expand_enable) { + s = get_strip (sur->expand, get_address (msg)); + } else { + s = _select; + } + if (s) { + boost::shared_ptr rt = boost::dynamic_pointer_cast (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) { @@ -3760,6 +3796,7 @@ OSC::strip_select_group (boost::shared_ptr s, char *group) if (s) { boost::shared_ptr rt = boost::dynamic_pointer_cast (s); if (!rt) { + PBD::warning << "OSC: VCAs can not be part of a group." << endmsg; return -1; } RouteGroup *rg = rt->route_group(); @@ -3785,7 +3822,6 @@ OSC::strip_select_group (boost::shared_ptr s, char *group) rg->set_name (grp); } } else { - // nothing to change return 0; } } else {