Only update MIDI devices list, which can be dynamic. Audio devices
which are in-use can't be updated, and the GUI may no longer show
the current device (since it is in use).
OptionPitchHighQuality - Use the highest quality
method for pitch shifting. This method has a CPU cost
approximately proportional to the required frequency shift
Editor::insert_time(), Editor::remove_time() handle automation
directly because time may be inserted to Routes without playlists
and combined undo-operation with marker, and tempo-changes.
However when the preference "automation_follows_regions" is enabled,
the playlist already moves the automation of region under any region
(possibly overriding future automation).
This resulted in possibly lossy, duplicate automation moves.
* Remove leading and trailing whitespace.
* use tabs to indent, space to align
/* prefer C-style comments like this,
* always use an asterisk on every line, this
* way small ASCII-graphics are always aligned
* using spaces after the asterisk.
*
* ^
* / \
* / \
* / \
* / \
* / \
* / /\ \
* /__/ \_/\_^__\
* A R D O U R
*
<< NO asterisk, there may be tabs :(
*
*/
eg. LV2 externalUI windows are not managed by ardour; Ardour cannot
intercept mapped() or delete_event() signals and hence also not
create a visibility-tracker.
First call to WindowProxy::toggle() creates the window, and the 2nd call
crashed since 6ca8ec5141, due to missing vistracker.
e.g. externalUI plugin windows, the processor-box uses WindowProxy
for all plugin-UIs incl. externalUIs.
lv2 state mandates that
> The plugin MUST use this function [ absolute_path] in order to
> actually open or otherwise use any paths loaded from plugin state.
Previously the plugin uses the value directly. Also
> The caller is responsible for freeing the returned value with free().
is now implemented on systems other than windows (where this is not
possible, since the memory must be free()ed in the same module where it
was allocated.
Use RCU of automated parameter when looking for next automation event
to use for split processing. This speeds up PluginInsert processing
when rolling for plugins with many not-automated parameters.
Keep a dedicated list of automated parameters to evaluate in realtime.
This fixes a performance issue with plugins that have many controls
with only few of them being automated.