It was possible that auto-connect-thread or GUI thread called
DelayLine::set_delay without acquiring the process-lock.
Changing the delay while processing is not supported and
can cause glitches.
backtrace:
```
DelayLine::set_delay
Send::update_delaylines
Send::set_delay_out
InternalReturn::set_playback_offset
Route::update_signal_latency
Session::update_route_latency
Session::update_latency_compensation
Session::auto_connect_thread_run
```
There is no event processing after the locate, and so the event that is (was)
queued at the loop start will not be processed, and each time we reach the
loop end, we will try (and fail) to queue an identical event (fail because
duplicate events are not allowed). We don't need this event (or signal) at
all, because locates (and then ::start_transport() while looping do not
represent a state change that any UI needs to know about.
The previous idea was to follow Ardour's default
\delta val = \delta Y - \delta X
In reality it turns out that this is better represented
with kLinearMode.
VST3 offers the following:
* Circular with jump to clicked position
* Circular without jump to clicked position
* Linear: depending on vertical movement
The first is right out. Value changes need to be
continuous. The last explicitly mentioning vertical
movement was also somewhat discouraging,
however most plugins don't take it literally and allow
linear X/Y movement.
* Fix API calls (pack_start)
* Fix logic update sensitivity in response to callbacks
* Cleanup white-space and re-indent
TODO: invert timeout behavior: opt-in to timeouts, not opt-out.
This addresses an issue with gnome and mate, where
dialog windows do not have a window close button,
and expect direct interaction with the user "OK/Cancel",
"Yes/No", etc.