This riffs off the previous commit, a simple way to replay
ctrl events without re-evaluating plugin automation line.
There may be a better way to handle this (e.g. replicate the
plugin for display only, evaluate on the fly in the UI thread)
Short of redesigning our disk-reader/playlist/region infrastructure
this is likely a sucks-least compromise for the time being.
This still does not work on macOS. closing a session (using
the menu) while the dialog is visible still causes a crash:
`unload_session()` completes and destroys the session
before the dialog's run() method returns and destroys the dialog.
This can happen with VST2s (e.g gvst) and some JUCE based plugins.
Previously that lead to a "programming error: no per-thread pool"
when the DR queues a overwrite buffer session-event.
This is mainly for the benefit of Mixbus, where input_latency
is not propagated upwards from the master bus (no direct
connection).
In Ardour's case _worst_input_latency >= _worst_route_latency
unless a given track with latent plugin is not connected.
Previously looping became out of sync (normal playback was not
affected) when a track had a latent plugin.
This reverts 00e35c48b6. Modal dialog does not
allow to change the color of the RouteGroup. Interaction
with the colorpicker was not possible.
See also 0db79b8023
Mute and Panner are the only automatable Route owned controls
(that are not managed by a processor). So they need special
casing to be moved when moving a region.
This replaces rule #17, 27, 43 and 59 on
https://manual.ardour.org/appendix/monitor-modes/
"Meter (What you see)" changes to 'Disk (Audio)'
aka "what you hear" in those cases.
This way "what you see" is always "what you hear".
Monitoring inputs is more conveniently done using
the Recorder Page.
The core selection can be (a) stripables (b) automation controls (c) possibly a combination of both
Any given selection op might pass (a) or (b) or (c), so we need to handle the
case where (a) is null.
By default timecode.rate = 30. When 30fps LTC is received,
::detect_ltc_fps() never returned true (FPS changed), and
the TransportMaster never entered "locked" stage.