When limiting the message count (e.g. for display in a dialog),
use reverse order, and only print errors.
When loading a session fails, the most recent error is
more likely the real cause.
On recent Mac systems (Catalina) OpenGL is slower compared to
directly using GTK's NSView. Furthermore when compiled on
Catalina, and running on a system with a Retina screen, the initial
size of the canvas may be wrong:
libs/gtkmm2ext/nsglview.mm:175:1: warning: method possibly
missing a [super reshape] call [-Wobjc-missing-super-calls]
This is not an issue when running versions compiled on older systems.
Previously this was inherited via PBD.
On MacOS/X, this adds
"-undefined dynamic_lookup -flat_namespace"
and various "-framework .." options to linkflags
Without this flag, .dylibs fail to link usually because
of missing `-lintl` (Undefined symbols: "_libintl_dgettext")
On other systems this is a NO-OP:
CFLAGS_OSX, CXXFLAGS_OSX and LINKFLAGS_OSX
are only set on the darwin platform.
This adds the time when a log message is displayed.
ARDOUR_UI::display_message() parses the prefix,
so the timestamp cannot be prefixed in the beforehand.
Still, UI::process_error_message() is called directly in
the same thread, so this makes no significant difference.
For MacOS/X this is equivalent, rendering happens using a
CGBitmapContext + image-surface. Windows and Linux needs profiling
for respective equivalent surfaces.
This is an intermediate commit, before replacing image surfaces with
cairo pattern groups.
The eventual goal is to reduce flickering and/or use
CPU + bitblt for specific widgets instead of cairo
graphics-cards accel.
This also removes excessive calls to getenv() for every rendering
operation.
gcc can recognize various regexps in comments. Since C++17 provides
[[fallthrough]], using /* fallthrough */ consistently seems
appropriate until we switch to C++17.
see also https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
The singleton ActionModel provides a Gtk::Treestore of all actions known to
ardour.
To be used for example by surface control editors to implement action bindings.
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
Previously the action-manager only called ::abort() when
an action could no be found. This add a further restriction
that the expected class must match.
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.
This fixes inconsistent WM::Proxy state when a window is destroyed
Specifically "session-options-editor" when the session is unloaded;
previously "toggle-session-options-editor" was never unset.