When double-clicking to edit a fader value three button press
events are created:
1. GDK_BUTTON_PRESS
2. GDK_BUTTON_PRESS
3. GDK_2BUTTON_PRESS
The first two start an Editor Drag, which later crashes in
Editor::mid_track_drag() gtk2_ardour/editor.cc:7067
Restoring the export profile state previously added a new
Export Processor for each state for each channel to the same
route.
This fixes silent stem export channels after an initial
correct stem export (which saves ExportChannelConfiguration)
Note that the Delivery::set_name() method worked correctly, but
the Route::set_name() method would return false incorrectly. This
appears to have no consequences.
The GUI `RouteUI::verify_new_route_name` checks for colons.
This left the session vulnerable, from calling set_name
from other places (e.g. ctrl surfaces).
It seems that a `Glib::ConvertError` is thrown, and then the
function that catches the error causes another ConvertError in
`err.what()` (which presumably include the filename that
causes the error).
relevant part of the backtrace (macOS Crashdump):
```
Glib::ConvertError::throw_func(_GError*) + 56
Glib::Error::throw_exception(_GError*) + 292
Glib::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, Glib::ustring const&) + 131
StringPrivate::Composition& StringPrivate::Composition::arg<Glib::ustring>(Glib::ustring const&) + 25
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > string_compose<Glib::ustring> (...) + 81
PBD::run_functor_for_paths(...) + 1313
```
We simply ignore the direct out sends from trax.
Note `DEFINE_ENUM_CONVERT` for Role is defined in delivery.cc
so we need a static method to directly read the send's role.
This fixes a crash when SSL's channelstrip calls set-selection
early on during session load, during Session::load_routes.
Session::add_routes_inner calls calls ARDOUR::GUIIdle() which
can trigger a SSL Native Channel Strip 2" VST3 to call
VST3PI::setContextInfoValue, which in turn emits a
CoreSelection::send_selection_change before the session is
fully loaded.
This also handles various edge cases where a given AC may
not [yet] exist.
* increase memory pool (bindings alone require 1.5 MB), and all session
scripts have a shared memory pool.
* use TLSF (like Lua DSP processors) - this fixes an issue with atomics
(notably int62_t, temporal) on macOS and ARM, which need to be
aligned.