The ShouldLoad() signal is handled by flush_pending(). This is the first
time that normal application flow can be interrupted in ::starting()
after app->ready().
This calls ::load_from_application_api(), which in turn calls
startup_fsm->handle_path(). This sets off the complete initalization
process, loading the session, and concludes with ::sfsm_response(),
where there is a call to `delete startup_fsm;`
Previously execution continued in StartupFSM::start() which caused a
crash.
AutomationWatch::transport_state_change() is called at a time
when transport has just started to roll, but may not yet be rolling
(count-in, latency-preroll).
Later, after pre-roll is complete and transport starts moving,
AutomationWatch::transport_state_change() is not called again.
Thus set_in_write_pass(true); is never called, and writing
automation assumes that all changes happen while stopped.
In 'write" mode, guard points are added for each change, when
the transport is stopped.
Before this change, this happened at periodic intervals even
when rolling.
Terminology used by server and client was starting to diverge.
C++ classes ArdourStrips and ArdourGlobals classes have been
renamed to ArdourMixer and ArdourTransport respectively.
State node values for transport functionality have been simplified
and prefixed with 'transport_' to match what was done for strips.
Replace previous callback based basic client with an easier
to use object-oriented API that further abstracts the low level
details of the WebSockets Server surface messaging protocol.
All built-in web surface demos were updated to use the new API.
LWS_WITH_EXTERNAL_POLL a new optional define for libwebsocket 4.x.
Earlier versions always supported it, without the compile-time define.
This fixes support for libwesocket 2.x (Debian, Ubuntu), and 3.x.
Also for Windows, LWS_WITH_GLIB is not available.
This is a glibc-only extension, so don't bother on other platforms.
Also, according to POSIX, PTHREAD_STACK_MIN is defined in limits.h, so
include climits just to be safe.
This can happen if the recent sessions file has new lines with no
characters on it which can be the direct loading sessions with wacky
names. For example, one that has a carriage return or newline in it.
Some libraries use thread locals and hence increase the min
requirement.
This is seen on void-linux for example:
> linking a minimal program against cairo gives a
> __static_tls_size of 43008 bytes.
> Doing the same on Ubuntu focal and Debian bullseye,
> __static_tls_size is only 4608.
Increment for CC values > 0x40, decrement control for values <= 40.
- 0x41 increment by one
- 0x40 decrement by one
previously: 0x3f decremented by one, 0x3e by two, .. 0x00 by 64,
but 0x40 also by 64.
This is used with string_compose ("detach-%1") etc,
and "preferences" may be translated by gtk or 3rd party translations
(Ardour itself only has upper-case "Preferences" as translatable
string)