Commit graph

17149 commits

Author SHA1 Message Date
Robin Gareus
445d5a75d0
NO-OP: use reference instead of iterator 2021-06-08 19:26:40 +02:00
Robin Gareus
23e3b6f6a8
Amend previous commit (remove debug instrumentation) 2021-06-08 16:49:55 +02:00
Robin Gareus
e8130c1f1b
Optimize input-metering
Rely on previously collected I/O port-list, skip expensive call
to get_physical_inputs() and rely on RCU port list alone.
Also skip port_is_mine() test in optimized builds.
2021-06-08 16:43:26 +02:00
Paul Davis
b75a37abdb fix arguemnts to transport call in shared control surface code for transport_play() 2021-06-08 08:32:19 -06:00
Ben Loftis
f4d4dddbeb Paste Mode: overwrite-paste, naive implementation using rec-mode (for testing) 2021-06-08 08:33:48 -05:00
Ben Loftis
1c9bb9ab41 Playlist UI tweaks: refactor PlaylistSelector (life-cycle, code-cleanup)
* You can now show a selector for each track, rather than one global dialog
* Removed the 'cancel' button: it was too easy to unintentionally revert your selection
* Correctly sort and name new playlists when they are added or renamed from the P menu
* Fix problem where list contents disappeared when changing desktops (on_unmap_event)
2021-06-08 08:33:48 -05:00
Ben Loftis
c2fb85e37e Cruft removal: behavior of Region List has changed; these functions are deprecated (libardour) 2021-06-08 08:33:48 -05:00
Robin Gareus
b0db646029
Refactor input port monitoring
* avoid memory allocation (remove std:set<>&)
* skip nested loop using port-names as IDs

However this adds a bit of extra cost in case input ports are
monitored: get_port_by_name() and get_buffer()
2021-06-08 14:34:57 +02:00
Robin Gareus
bed992d55f
Minimize false sharing of MPMC queue variables 2021-06-07 23:40:29 +02:00
Robin Gareus
5cec55da2e
Micro-optimization: std::atomic<> vs glib
glib atomic operations include a complete act as a full
compiler and (where appropriate) hardware memory barrier.

std::atomic<> allows dedicated acquire and release barrier
semantics which are not available with glib.
2021-06-07 20:44:29 +02:00
Robin Gareus
1eb6b82b9f
Prevent L1 cache line evicion in MPMC queue
This reduces cache coherence overhead of the queue
2021-06-07 16:05:42 +02:00
Robin Gareus
ecb992de64
Remove custom generic plugin UIs (a-eq) 2/2 2021-06-04 01:43:29 +02:00
Robin Gareus
bc4ef3ff3d
Update weakjack, alternative macOS libjack paths
see also https://github.com/x42/weakjack/pull/13
2021-06-02 17:42:01 +02:00
Ben Loftis
6cf1083cb6 Playlist UI tweaks: add function playlists_for_pgroup() (libardour) 2021-06-01 17:55:09 -05:00
Robin Gareus
63629c0a91
NO-OP: whitespace 2021-06-01 19:40:21 +02:00
Ben Loftis
0e86e3337c Playlist UI tweaks: relax requirement that playlists names must be unique (libardour part) 2021-06-01 09:39:50 -05:00
Ben Loftis
932b07b7b0 Playlist UI tweaks: assign a pgroup when a playist is first recorded to
* this solves the problem where the first 'take' was not grouped because
 the user has not explicitly created a take for the group yet
2021-06-01 09:39:50 -05:00
Ben Loftis
28aa22e11a Playlist UI tweaks: Add pgroup_id field to playlists, to associate playlists created in the same operation (libardour) 2021-06-01 09:39:50 -05:00
Ben Loftis
f6d2229c47 Playlist UI tweaks: Update PlaylistSelector (libardour part)
* Add an option to use a playlist without stealing its ownership. (libardour)
* Tracks emit PlaylistAdded when a new playlist is created either by copying or by creating a new empty pl
2021-06-01 09:15:54 -05:00
Ben Loftis
7b2854b2fb Prefer storing playlist-IDs for frozen tracks; but if none is provided then search by name
* no version-check should be necessary because when opening an old session,
 playlists can be looked-up by discrete names and will be tracked by ID thereafter
2021-06-01 09:14:07 -05:00
David Robillard
71a414b4b0 Remove unused function (Wunused-function) 2021-05-30 20:09:35 -04:00
David Robillard
8d471e6761 Remove extraneous parentheses (Wparentheses-equality) 2021-05-30 20:09:35 -04:00
David Robillard
74e21e942e Remove unused variables (Wunused-variable) 2021-05-30 20:09:35 -04:00
David Robillard
1b4aaea92a Remove unused private fields (Wunused-private-field) 2021-05-30 20:09:35 -04:00
Robin Gareus
c57c230dfc
Fix loading old session w/missing playlist #8727 2021-05-30 18:54:45 +02:00
Robin Gareus
df0571892f Coreaudio: fix duplicates in device list
This is an edge-case only, some devices may
dis and reconnect with different IDs.
2021-05-29 17:54:39 +02:00
Damien Zammit
bdb5aec1cc ptimport: Fix crash when imported session has zero audio tracks 2021-05-29 12:54:10 +10:00
Paul Davis
3d15b61e37 fix Playlist::remove_gaps() for ExternalOverlap regions; add per-gap callback 2021-05-28 17:43:33 -06:00
Paul Davis
c8c506f702 fix bug in Locations::ripple() 2021-05-28 17:43:33 -06:00
Paul Davis
9766132a53 libardour: add Locations::ripple() 2021-05-28 17:43:33 -06:00
Robin Gareus
37acb07752 Fix previous commit 2021-05-28 22:51:12 +02:00
Robin Gareus
0f25086446
Misc fixes pertaining to plugin-scanning 2021-05-28 22:03:10 +02:00
Robin Gareus
79b50aebcd
Ignore all export xruns while not rolling
This fixes false positives with some backends, notably JACK2.
2021-05-28 21:22:10 +02:00
Paul Davis
fecce7c333 libardour: initial implementation of Playlist::remove_gaps()
This is probably a little naive and may need extending to cover cross-track scenarios
2021-05-28 12:35:30 -06:00
Paul Davis
3e56eedf11 libardour: add X_() macros around several Source XMLNode state property names 2021-05-27 17:17:40 -06:00
Paul Davis
d4bc60a388 libardour: infrastructure for cue-marker-only source undo/redo 2021-05-27 17:17:40 -06:00
Paul Davis
83100de133 NOOP: rearrange arg decl to follow conventions 2021-05-27 17:17:40 -06:00
Paul Davis
ca44f54ed6 libardour: small changes to cue marker API to return bool from Source modification methods 2021-05-27 17:17:40 -06:00
Todd Naugle
1a1e67f595 Use Posix style return values for sem wait when on windows.
0 on success, -1 on error
2021-05-27 15:17:15 -05:00
Todd Naugle
be6d0fa95c Do not use named semaphores on Windows since they are system wide
https://docs.microsoft.com/en-us/dotnet/standard/threading/semaphore-and-semaphoreslim#named-semaphores

Running multiple instances of Ardour or Ardour/Mixbus would fail in very
odd ways since they would signal each other. Unnamed sems are
correct for this use case.
2021-05-27 15:13:40 -05:00
Robin Gareus
e91fd1fce6
Add Lua binding to query plugin-presets and scalepoints 2021-05-27 16:56:24 +02:00
Robin Gareus
a829fa58b3
Fix another C++11ism 2021-05-26 04:14:18 +02:00
Robin Gareus
2cf4568d82
Fix C++11isms in 3fb9f47bf1 2021-05-26 03:55:29 +02:00
Robin Gareus
d839e9cf14
Consistent _nth_ API call 0-based index 2021-05-26 02:33:31 +02:00
Damien Zammit
3fb9f47bf1 ptimport: Fix importing of large sessions, no more crashing and faster 2021-05-25 20:37:39 +10:00
Paul Davis
3a1cfc837e libardour: API infrastructure for renaming cue markers 2021-05-24 20:23:06 -06:00
Paul Davis
c2a012545b API infrastructure for dragging region/cue markers 2021-05-24 12:26:21 -06:00
Robin Gareus
a6fc82537e
Fix assert in Waveview cache size
previous condition made no sense. effectively assert(bytes > 0).
2021-05-23 21:41:45 +02:00
Robin Gareus
42f4e64d5f
Fix a moderate memory leak
periodic calls ARDOUR_UI::update_clocks() -> AudioClock::set()
-> 2+ calls to UI::set_tip() can easily accumulate 50MB/hour
when rolling.
2021-05-22 22:11:42 +02:00
Robin Gareus
d703079f10
ace-fluidsynth: add bypass (ignore notes, but retain reverb) 2021-05-21 18:40:59 +02:00