Commit graph

19125 commits

Author SHA1 Message Date
Robin Gareus
37c0fceeac
Prefer comparison operators as part of the class 2022-05-06 02:04:43 +02:00
Robin Gareus
ce95c9fb09
Fix std::set< BackendPortPtr> lookup by key
The set uses a custom sort-by-name comparator.
Previously it was possible to have an inconsistent set iterator.
std::set::find() did not find a given port while std::find() did.

This fixes using std::set::find() on the PortIndex set.
2022-05-06 02:04:33 +02:00
Robin Gareus
668cb1ca3b
Set names of RT tasks threads 2022-05-05 00:54:47 +02:00
Robin Gareus
6c2c3a49c4
Update comment about required buffers 2022-05-05 00:54:47 +02:00
John Emmas
2554302281 Export a variable which can't be accessed via a 'get()' function
Temporal::most_recent_engine_sample_rate is used in performance-critical code so shouldn't be accessed via a 'get()' function. But (via the TEMPORAL_SAMPLE_RATE #define) it does get accessed outside of libtemporal and therefore needs to get exported.
2022-05-04 16:09:34 +01:00
Robin Gareus
28231d6365
NO-OP: cleanup public API, re-indent source 2022-05-04 05:58:06 +02:00
Robin Gareus
96c138c985
ALSA: prevent excessive slave-device latency updates on underrun 2022-05-04 05:57:52 +02:00
John Emmas
2245e362b9 TempoMap::twist_tempi() gets used outside of libtemporal so needs to get exported 2022-05-03 11:31:43 +01:00
Caleb Potter
b689d2881e M: US2400: allows user to bank over sends while in TrackView.
Sends only appear on the last 8 vpots, which means sends to matrices 9-12
are unreachable without banking.
2022-05-02 22:41:40 -06:00
Caleb Potter
20fff72370 US2400: Use Bank- and Bank+ to page over sends on pots 2022-05-02 22:41:40 -06:00
Caleb Potter
0d05cd231b US2400: maps track parameters and sends to vpots
Pots 0-4 now display the 5 parameters from the Mackie track subview when a
track is selected and pots 8-23 will display up to the first 16 sends.
2022-05-02 22:41:40 -06:00
Paul Davis
b5487415ec editing: a partiaally implemented version of TempoTwistDrag, to be completed. 2022-05-02 16:47:23 -06:00
Paul Davis
86e7a1b259 temporal: no reason for Point::set() to be virtual 2022-05-02 16:45:33 -06:00
Paul Davis
55755d5453 temporal: fix TempoMap::reset_starting_at()
We were using a given tempo or meter point as part of the metric used when
recomputing its position. In fact, the metric should be only use the
tempo/meter immediately preceding the given point.
2022-05-02 16:44:15 -06:00
Paul Davis
00b9e3f86a temporal: change return type of TempoMap::next_tempo()
It is more useful to get the actual TempoPoint than just the Tempo
that we discover.

Aside: it would be awesome to understand how to use boost::intrusive to get the
next tempo point directly from the tempo hook.
2022-05-02 11:40:23 -06:00
Paul Davis
2b8b9a3a2f const for const-sake 2022-05-01 18:01:35 -06:00
Paul Davis
d218dcb21b evoral: when adding points to a ControlList, coerce the time domain of the new point to the list time domain
This may not be the ideal solution, but for now it appears to be the best approach to preventing
points with different time domains with the same list
2022-05-01 17:50:51 -06:00
Robin Gareus
f7e917c123
Potential fix for M1 x-thread events
On M1, the cross-thread channel sets G_IO_PRI in addition to G_IO_IN
this breaks various assumptions in receivers, which test for ~G_IO_IN
as error condition.
2022-05-02 00:02:33 +02:00
Paul Davis
8b97abee19 change location of TempoMap::fetch() call in graph main thread to match semantic equivalent in process threads 2022-04-30 19:16:31 -06:00
Paul Davis
f3bf91b9b1 fix another use of a reader lock by a source (comments explain more) 2022-04-30 17:25:53 -06:00
Paul Davis
b74fb262fa use a very very slightly more convenient and possibly more correct method for LV2 bpm port 2022-04-28 14:33:39 -06:00
Paul Davis
51ebb143de on windows, allow ARDOUR_DATA_PATH envvar to be used in the data search path 2022-04-28 14:33:39 -06:00
Robin Gareus
7cd16d9473
Apply new Item method name to various other usage sites 2022-04-27 13:16:18 +02:00
Paul Davis
c9b8a91edb apply new Item method name to various other usage sites 2022-04-26 22:04:08 -06:00
Paul Davis
f913373351 canvas: change Item::bb_clean() to better named Item::set_bbox_clean() 2022-04-26 22:04:08 -06:00
Paul Davis
c75ceb31ab canvas: when an item has its bbox marked dirty, this should propagate to all parents 2022-04-26 22:04:08 -06:00
Paul Davis
d54d63da3a canvas: remove code long disabled via an "if (0" 2022-04-26 22:04:08 -06:00
Paul Davis
3d860b9665 libpbd: do not use DEBUG transmitter from inside AbstractUI<T> request methods
This will lead to recursion, since delivering the debug msg goes through a request method.

Discovered by running with -D all
2022-04-26 22:04:08 -06:00
Ben Loftis
6917a1e836 triggerbox: initialize the follow_length control from the source data length 2022-04-26 09:42:00 -05:00
Robin Gareus
98bfede1fc
Restore connections when using templates
This also fixes an issue when duplicating tracks. Saved
connections were ignored and tracks were auto-connected.
2022-04-26 15:36:51 +02:00
Paul Davis
6f5d3d8dd9 another change from ReaderLock to WriterLock in audio source peak reading
The rationale is as for f06d04c174
2022-04-25 20:33:21 -06:00
Paul Davis
f06d04c174 audiosource: lock held during peak reading must be a write lock
We modify elements of the source object, not to mention the peakfiles on disk. This
was a regression introduced when switching from Lock to RWLock, caused by a failure
to recognize this as a case where a write lock was required.

The presence of scoped_array<> as a member of AudioSource (peak_cache) is suspicious
nevertheless, and we should establish that it serves a useful purpose.
2022-04-25 19:03:11 -06:00
Robin Gareus
be927f7a58
Revert "Debug async MIDI port (M1 builds)"
This reverts commit f8a0de5928.
2022-04-25 15:40:11 +02:00
Robin Gareus
f8a0de5928
Debug async MIDI port (M1 builds) 2022-04-23 23:12:16 +02:00
Robin Gareus
9ce91e2952
NO-OP: clang-format 2022-04-23 23:12:13 +02:00
Robin Gareus
c1d6c0690e
Fix poll() edge case on macOS, clean up logic
Return from poll_for_request() when CrossThreadChannel is
closed/destroyed. -- see also f4166fb61d

This also cleans up poll API usage, and check for nonnegative
return value is added.
2022-04-23 23:12:10 +02:00
Robin Gareus
95693f9364
Fix endless recursion when creating cyclic connection graphs
This is mainly relevant for Mixbus, which allows cyclic-connections
to record Master-out on a Track (which unconditionally has Mixbus send
and feeds master).

In Ardour it may also cause issues when creating loopback connections,
however latency is not usually updated with invalid graphs (old
process graph remains in use).

Otherwise it fixes a crash connecting Track 1 -> Track 2 -> Track 1.

This also optimizes Route::output_effectively_connected by caching
any prior lookup. This helps e.g. Track 1 -> Track 2 -> Master.
The connection "Track 2 -> Master" now only need to be looked up once.

See also 7958031287 and a556e96ed0
2022-04-23 15:37:57 +02:00
Paul Davis
ae32daa148 allow ARDOUR::Filter to be used with MIDI regions/sources 2022-04-20 17:11:29 -06:00
Paul Davis
aee3cf1534 handle an action named "Escape" specially when blocking activation during drags 2022-04-18 12:22:30 -06:00
Paul Davis
c0b1f0e63c fix buglet in RAII mgmt of Bindings::_drags_active 2022-04-18 12:21:57 -06:00
Paul Davis
729f930974 bindings: add a mechanism to prevent binding activation during drag 2022-04-18 11:38:21 -06:00
Caleb Potter
8b82de7ac1 Prevents user from infinitely banking right in mackie plugin subview
Changes handle_cursor_right_press() in PluginSubviewState to pure virtual
function so that PluginSelect and PluginEdit can each have their own
version.
2022-04-18 11:14:53 -06:00
Caleb Potter
f3bd740913 Formatting. Adds spaces before parentheses 2022-04-18 11:07:45 -06:00
Caleb Potter
8e375f5acd Moves left brackets to be on the same line as conditionals 2022-04-18 11:07:45 -06:00
Caleb Potter
bc6461dc76 Prevents user from infinitely banking right in mackie sends subview 2022-04-18 11:07:45 -06:00
Caleb Potter
17a7dbe06d adds ability to bank over in mackie sends subview
The cursor_left and cursor_right mackie control buttons will now move the
sends subview left and right like it does in the plugin subview. Previously,
if you had more than 8 sends (which is almost always the case for Mixbus),
then sends 9+ were unreachable on an 8 channel controller.
2022-04-18 11:07:45 -06:00
Robin Gareus
217f51e6fb
Break out common plugin-insert state methods
This is in preparation for IO-Plug, and should also come
in handy later for per region plugins.
2022-04-14 20:08:22 +02:00
Robin Gareus
74a673ce17
Create a virtual base class for PluginInsert
This in in preparation for IO-Plug GUI support.
2022-04-14 16:35:03 +02:00
Robin Gareus
f9d80c32d6
Allow to destroy Widgets when removing them from a container
This is useful when the container uses manage()d Widgets,
which are otherwise not destroyed.
2022-04-14 16:35:02 +02:00
Robin Gareus
defc902571
Allow to use Destructible as virtual base class
This is in preparation for a pure-virtual base class for
PluginInsert to expose `DropReferences` in the virtual base.

```
class PlugInsertBase : virtual public PBD::Destructible
class PluginInsert : public Processor, public PlugInsertBase
class Processor : public SessionObject
class SessionObject : public PBD::StatefulDestructible
```
2022-04-14 16:35:02 +02:00