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)
See also 72af571f0c, ATAV for Processors cannot be identified by
Parameter alone. STAV uses a std::map<Evoral::Parameter, ..>
that is only valid for unique parameters.
The map cannot store Evoral::Parameter(PluginAutomation)
because it its not unique.
This fixes an issue with using
StripableTimeAxisView::_automation_tracks
for PluginAutomation. The latter is indexed per-plugin in
RouteTimeAxisView::processor_automation
Evoral::Parameter(PluginAutomation) is only unique per plugin,
and hence cannot be used in STAV.