Commit Graph

31507 Commits

Author SHA1 Message Date
Robin Gareus
ac5bca4a92 Clean up RouteUI header
* Consolidate access modifiers
* Remove all public member variables
* Only expose required functions, use private
  whenever possible
* Rename private members, prefix underscore
* Remove cruft
2021-03-27 17:44:34 +01:00
Robin Gareus
003be3d87e Localize private variable (only used by RouteUI) 2021-03-27 16:25:30 +01:00
Robin Gareus
24499fa7da Foldback: use RouteUI send-spill functions
This resolves ambiguities of overloaded non-virtual methods
that used shared protected variables (send_blink_connection).

It fixes "show sends" of foldback busses (spilling the send
controls) and allows for showing showing other sends directly
without first disabling it.

This fixes some related issues with inheritance and
signal propagation.
2021-03-27 15:52:14 +01:00
Robin Gareus
212b08b422 Foldback: remove unused processor actions
Also since foldback-busses are not selectable AxisViews,
various keyboard-shortcut operations cannot be performed
from the mixer-context. However the processox-box itself
provides these actions for the fold-back bus.
2021-03-26 23:52:12 +01:00
Robin Gareus
a94c0d62a6 Foldback: Con't work to remove unused mixer-strip code 2021-03-26 23:49:36 +01:00
Robin Gareus
c96462f7bb maschine2: gtk is an indirect dependency of libgtkmm2ext 2021-03-26 18:44:20 +01:00
Robin Gareus
60ff3ef764 Work around ffado port-name idiosyncrasies 2021-03-26 17:18:23 +01:00
Robin Gareus
e6496ab032 Ignore ARDOUR_DATA_PATH env variable on windows
The variable is unset (and unused), windows_search_path()
is used on that platform.

This prevents the "ARDOUR_DATA_PATH not set in environment"
message from being printed.
2021-03-26 17:15:12 +01:00
Robin Gareus
c51c254fae Do not input-monitor ALSA/JACK MIDI-Through ports 2021-03-26 16:46:15 +01:00
Robin Gareus
0edb6083f1 Foldback strip: remove cruft
Remove unused code that was copy/pasted from mixer_strip.cc
which is not needed for foldback strips. Notably alternative
delivery display mode (aux-sends).
2021-03-26 16:39:40 +01:00
Robin Gareus
cf7aad8a8a Fix typo in previous commit 2021-03-26 15:04:21 +01:00
Robin Gareus
ada1b9bce5 Show shaded plus icon on scroller-base background (rec, mixer) 2021-03-26 14:36:50 +01:00
Robin Gareus
ad4e92380a Add a shaded plus (+) icon 2021-03-26 14:35:51 +01:00
Robin Gareus
fb33b4c2f3 Add convenience API to render icons on signal_expose_event 2021-03-26 14:35:45 +01:00
Robin Gareus
04a40140dc Remove "add route" button from recorder and mixer
This GTK button style is out of place in both contexts.
Furthermore it is inconsistent to not have the same button
in the editor (there is a dropzone).
2021-03-26 14:35:17 +01:00
Robin Gareus
05f6550e2c Foldback: NO-OP clang-format 2021-03-26 02:48:04 +01:00
Robin Gareus
01bc039f9b Foldback: use IObutton
This follows 3e7b2bb3f5, common shared implementation
of IOButtons. This also uses RouteUI provided IOSelectorWindows.
2021-03-26 02:33:56 +01:00
Robin Gareus
b12cad80bc Foldback: consistent mouse handling part 1
* un-hardcode button numbers, use portable modifier API
* allow to toggle Send bypass with middle-click
* add support for delete-operator
* Only act on single-click press
2021-03-26 02:17:09 +01:00
Robin Gareus
345726e223 Get NI maschine surface to compile again 2021-03-26 01:16:30 +01:00
Robin Gareus
ce28065421 Foldback: refactor spill logic
Prefer to reuse spill logic from the mixer-ui.
This allows to spill routes directly after spilling
foldbacks. Previously that resulted in FB "show sends"
to keep flashing even then no foldbacks were spilled anymore.

It also simplifies various aspects of foldback prev/next
logic.
2021-03-25 21:38:10 +01:00
Robin Gareus
32c7b18f6d Relax export preparation timeout
This increases timeout granularity and ensure that
rt (TSFM) and butler thread can run to prepare exports.

This may fix an issue some windows users reported
"Cannot prepare transport for export", and increasing
the buffersize to 1024 or 2048 works around the isssue.

This also fixes an edge-case usecs_per_cycle() may return -1
(sleep forever) when the engine dies.
2021-03-25 21:15:13 +01:00
Robin Gareus
fe99dd4ec2 Fix solo button handler (amend aab296be48)
Exclusive solo is possible for both listen and in-place.
2021-03-25 14:47:24 +01:00
Robin Gareus
c3fb344f44 Foldback: spill follows selection 2021-03-25 14:39:46 +01:00
Robin Gareus
ff1083128b Include Tracks and Busses in connection dropdown #8636 2021-03-25 01:54:48 +01:00
Robin Gareus
16abbd6254 Show bindings that of reserved reserved Lua words
This correctly matches reserved words when looking
up C++ documentation, but prints the exposed binding.

e.g. ARDOUR::PluginInsert::type -> ARDOUR.PluginInsert._type

https://github.com/Ardour/manual/pull/171
2021-03-25 00:56:21 +01:00
Paul Davis
812dc2ec28 fix arguments for fmt-bindings now that argument formats have changed slightly 2021-03-24 16:42:33 -06:00
Paul Davis
fc42674b75 change fmt-bindings tool so that when run with --html 1 --accelmap 0 it generates manual input 2021-03-24 16:33:31 -06:00
Paul Davis
af0413b400 fix some errors in the keybindings template/input file 2021-03-24 16:33:31 -06:00
Robin Gareus
b174326228 Fix crash when using exclusive Mixbus listen 2021-03-24 19:16:31 +01:00
Robin Gareus
830f76bdce Change Solo button tooltip when using A/PFL 2021-03-24 18:16:43 +01:00
Robin Gareus
aacfc0704d Add A/PFL button to foldback strip 2021-03-24 17:48:22 +01:00
Robin Gareus
c1f1cd5b3e Prepare for foldback bus A/PF Listen 2021-03-24 17:47:53 +01:00
Robin Gareus
aab296be48 Exclusive P/AFL is possible since f2d2ea4baa 2021-03-24 17:04:44 +01:00
Robin Gareus
bbb244c1c9 Implement replacing events in the immediate queue
This corrects issues introduced in a75c239c0c,
and fixes MIDI playback.
2021-03-24 04:05:35 +01:00
Bruno Vernay
3f50b6d639 Directly use HTTPS
Easy: more performant and more secure.
2021-03-23 23:27:45 +01:00
cooltehno
49301785d6 Update cubasish-ardour.colors 2021-03-23 23:25:00 +01:00
cooltehno
4ec0f0b7ea Update recbox-ardour.colors 2021-03-23 23:24:05 +01:00
cooltehno
305bfb02e6 Update clear_gray-ardour.colors 2021-03-23 23:22:32 +01:00
Robin Gareus
41c52882af Fix region-peak display for trimmed regions 2021-03-23 20:37:57 +01:00
Robin Gareus
5cd26221ce Symlink libraries, strip ABI suffix
This exposes libs directly for plugins that may dynamically
load e.g. `libcurl.so` at runtime.
2021-03-23 14:55:24 +01:00
Robin Gareus
46d9a8d819 Increase contrast of insensitive faders (automation play) 2021-03-22 21:54:25 +01:00
Robin Gareus
59b3b02dea Indicate gain-entry focus/selection
The mixer gain-entry selects all when the entry is focused
(see ArdourWidgets::FocusEntry). Due to the selection there is
no visible cursor, and it was not obvious that the entry
has focus. Also moving the mouse outside of the strip drops focus
without any indication.
2021-03-22 21:24:33 +01:00
Robin Gareus
8b4edaa950 gcc-11 compat, volatile atomic variables (2/2)
GUI part of previous commit.
2021-03-22 15:30:16 +01:00
Robin Gareus
cc7b8b1bc5 gcc-11 compat, volatile atomic variables (1/2)
"While 'atomic' has a volatile qualifier, this is a historical
artifact and the pointer passed to it should not be volatile."

Furthermore "It is very important that all accesses to a
particular integer or pointer be performed using only this API"
(from https://developer.gnome.org/glib/2.68/glib-Atomic-Operations.html)

Hence initialization of atomic variables is changed to also use
this API, instead of directly initializing the value.

This also fixes a few cases where atomic variables were
accessed directly.

see also libs/pbd/pbd/g_atomic_compat.h
2021-03-22 15:30:07 +01:00
Robin Gareus
bf64852fc2 Remove volatile/atomic re-display flags in GUI thread
Atomic operations are not needed here, since the GUI
is single threaded.
2021-03-22 13:45:29 +01:00
Robin Gareus
8fcbe789b4 Ignore pinout when copy/pasting plugins using Ctrl+c/v
This can lead to invalid configuration and crashes in
case plugin-replication changes.

see also 9ab84a95f1
2021-03-22 04:10:03 +01:00
Robin Gareus
a75c239c0c Do not accumulate SessionEvent::Overwrite events #8576 2021-03-22 02:54:42 +01:00
Robin Gareus
86a594fe90 Mitigate batch gain-changes #8576
This combines SessionEvent per playlist. Now per change
there are "only" two SessionEvent::Overwrite events
queued per playlist in the GUI thread for later processing
the Butler.

These are triggered by Playlist::ContentsChanged()
and Playlist::LayeringChanged(), both of which trigger
DiskIOProcessor::playlist_modified.

(Previously there used to be two per region)
2021-03-22 02:14:30 +01:00
Robin Gareus
0fc53d4683 Reduce signal emissions from set_scale_amplitude #8576
Playlist::ContentsChanged() is implicit.

Region::send_change()
-> Playlist::region_changed ()
-> Playlist::notify_contents_changed ()
-> Playlist::ContentsChanged () /* EMIT SIGNAL*/

This cuts the number of signals in half and also
allows to freeze/thaw the playlist to collect the
signals for each playlist into a single signal.
2021-03-22 01:04:01 +01:00
Robin Gareus
6ac8ee41af Collect Playlist::ContentsChanged() signals #8626
With a large session:

Editor::insert_time()
 -> Playlist::shift()
 -> 4000+ regions are modified
 -> 4k calls to Region::send_change()
 -> --"-- Playlist::region_changed ()
 -> --"-- Playlist::region_bounds_changed ()
 -> --"-- Playlist::notify_contents_changed ()
 -> --"-- ContentsChanged () /* EMIT SIGNAL */
 -> --"-- DiskReader::playlist_modified ()
 -> 4k Session::request_overwrite_buffer events are queued

The butler thread processes them all in the background, but
this also enqueues 4k+ events to the GUI event pool since the
GUI subscribed to Playlist::ContentsChanged ().

However the GUI is inside Editor::insert_time() and cannot handle
events. So they keep accumulating, and eventually hits
"POOL OUT OF MEMORY - RECOMPILE WITH LARGER SIZE!"

-=-
This fixes the issue by collecting blocking ::notify_contents_changed
until all region_changed() events are processed, and a single call
to Playlist::flush_notifications() notifies the UI and disk-reader.
2021-03-21 22:45:57 +01:00