summaryrefslogtreecommitdiff
path: root/libs/surfaces/osc/osc_select_observer.cc
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2017-11-06 13:37:37 -0800
committerLen Ovens <len@ovenwerks.net>2017-11-06 13:38:18 -0800
commitbb8d65c52839362937c153c3c716ad0a4789c067 (patch)
tree0482fb75d26e6d5fd754fd1e98afe47b4fb40879 /libs/surfaces/osc/osc_select_observer.cc
parent77a94e1015b6a9dad8273b0cb9337253f9e93eb2 (diff)
OSC link: make selection work correctly
Diffstat (limited to 'libs/surfaces/osc/osc_select_observer.cc')
-rw-r--r--libs/surfaces/osc/osc_select_observer.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/libs/surfaces/osc/osc_select_observer.cc b/libs/surfaces/osc/osc_select_observer.cc
index c635792f31..ecfb7ae1f2 100644
--- a/libs/surfaces/osc/osc_select_observer.cc
+++ b/libs/surfaces/osc/osc_select_observer.cc
@@ -59,6 +59,9 @@ OSCSelectObserver::OSCSelectObserver (OSC& o, ArdourSurface::OSC::OSCSurface* su
,eq_bands (0)
{
addr = lo_address_new_from_url (sur->remote_url.c_str());
+ gainmode = sur->gainmode;
+ feedback = sur->feedback;
+ in_line = feedback[2];
refresh_strip (true);
}
@@ -91,6 +94,9 @@ void
OSCSelectObserver::refresh_strip (bool force)
{
_init = true;
+ if (_tick_busy) {
+ Glib::usleep(100); // let tick finish
+ }
// this has to be done first because expand may change with no strip change
if (sur->expand_enable) {
@@ -113,9 +119,6 @@ OSCSelectObserver::refresh_strip (bool force)
_strip->DropReferences.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::no_strip, this), OSC::instance());
as = ARDOUR::Off;
- gainmode = sur->gainmode;
- feedback = sur->feedback;
- in_line = feedback[2];
send_size = 0;
plug_size = 0;
_comp_redux = 1;
@@ -497,6 +500,7 @@ OSCSelectObserver::tick ()
if (_init) {
return;
}
+ _tick_busy = true;
if (feedback[7] || feedback[8] || feedback[9]) { // meters enabled
float now_meter;
if (_strip->peak_meter()) {
@@ -561,6 +565,7 @@ OSCSelectObserver::tick ()
send_timeout[i]--;
}
}
+ _tick_busy = false;
}
void