This forward ports Mixbus' 4eca3dea47 without additional code to correct
for old (Ardour2) URIs.
A2, used path2uri() which accumulated and left duplicate slashes in place,
eg. "file:////". Mixbus3 auto-corrected this on load in
AudioLibrary::search_members_and().
However sfdb libraries are not shared between major versions, so this
code does no need to be forward ported.
This fixes an crashing issue with ArdourUI.SelectionList a bug
introduced in 6dc3bdf252 and 35dcd46d7d.
Since removal of the special cases in 35dcd46d7d, when using
a C-pointer in a std::list<>,
std::list<class*>::push_back(TypeListValue)
TypeListValues<>'s Head was expanded to "class*& const"
implied by void ::push_back(const T& value);
This resulted in lifetime issues with a classes that derive
from sigc::trackable (e.g. Ardour's Selection).
The reference leaves scope and isn't duplicated when it is pushed back
to the std::list<>.
The script scripts/select_every_2nd_region.lua crashed because entries
in the SelectionList were no longer valid.
Previously (before 6dc3bdf252) TypeListValues explicitly
copy-constructed the value to work around the lifetime issue.
This new solution bypasses the issue by directly using the c-pointer
without dereferencing it.
This is to be used sparingly because the pattern is dynamically
created every time. Mainly for the benefit of some Mixbus
widgets -- compared to ArdourButton::convex_pattern
This is a backport from Mixbus, to leave are 4 "open" pixels
at the bottom of the track so one can see the grid-lines between tracks.
This is useful with low region-transparency. grid-lines behind
opaque regions are not visible.
When discovering LV2 plugins, verify if a plugin's required features
and required options can be be satisfied.
This replaces a previous blacklist with a whitelist of supported
features/options.