diff options
author | Len Ovens <len@ovenwerks.net> | 2016-06-29 19:38:17 -0700 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2016-06-29 19:38:17 -0700 |
commit | 95beda06d918e94b14abfdb051fecc7dfdb5967a (patch) | |
tree | c6353d7ee9ec6b752b983893b768177010d0b837 /libs/surfaces/osc/osc_route_observer.cc | |
parent | 0809f088beb2f4e9b3aa63f34346c80fc08edb16 (diff) |
OSC: Reworked select to follow Gui selected strip regardless of it's inclusion in bank
Diffstat (limited to 'libs/surfaces/osc/osc_route_observer.cc')
-rw-r--r-- | libs/surfaces/osc/osc_route_observer.cc | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/libs/surfaces/osc/osc_route_observer.cc b/libs/surfaces/osc/osc_route_observer.cc index 717da4e40e..afb496002d 100644 --- a/libs/surfaces/osc/osc_route_observer.cc +++ b/libs/surfaces/osc/osc_route_observer.cc @@ -69,9 +69,8 @@ OSCRouteObserver::OSCRouteObserver (boost::shared_ptr<Stripable> s, lo_address a recsafe_controllable->Changed.connect (strip_connections, MISSING_INVALIDATOR, bind (&OSCRouteObserver::send_change_message, this, X_("/strip/record_safe"), _strip->rec_safe_control()), OSC::instance()); send_change_message ("/strip/record_safe", _strip->rec_safe_control()); } - if (!feedback[10]) { - send_select_status (); - } + _strip->presentation_info().PropertyChanged.connect (strip_connections, MISSING_INVALIDATOR, bind (&OSCRouteObserver::send_select_status, this, _1), OSC::instance()); + send_select_status (ARDOUR::Properties::selected); } if (feedback[1]) { // level controls @@ -371,20 +370,21 @@ OSCRouteObserver::clear_strip (string path, float val) } void -OSCRouteObserver::send_select_status () +OSCRouteObserver::send_select_status (const PropertyChange& what) { - // waiting for _strip->is_selected to start working - if (_strip) { - string path = "/strip/gui_select"; - - lo_message msg = lo_message_new (); - if (feedback[2]) { - path = set_path (path); - } else { - lo_message_add_int32 (msg, ssid); + if (what == PropertyChange(ARDOUR::Properties::selected)) { + if (_strip) { + string path = "/strip/select"; + + lo_message msg = lo_message_new (); + if (feedback[2]) { + path = set_path (path); + } else { + lo_message_add_int32 (msg, ssid); + } + lo_message_add_float (msg, _strip->is_selected()); + lo_send_message (addr, path.c_str(), msg); + lo_message_free (msg); } - lo_message_add_float (msg, _strip->is_selected()); - lo_send_message (addr, path.c_str(), msg); - lo_message_free (msg); } } |