diff options
author | Len Ovens <len@ovenwerks.net> | 2017-11-06 13:37:37 -0800 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2017-11-06 13:38:18 -0800 |
commit | bb8d65c52839362937c153c3c716ad0a4789c067 (patch) | |
tree | 0482fb75d26e6d5fd754fd1e98afe47b4fb40879 /libs/surfaces/osc/osc_select_observer.cc | |
parent | 77a94e1015b6a9dad8273b0cb9337253f9e93eb2 (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.cc | 11 |
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 |