Commit graph

16278 commits

Author SHA1 Message Date
Robin Gareus
f89ef872dd
Increase a-fluidsynth polyphony 2020-07-12 06:33:34 +02:00
Robin Gareus
9d390f38bf
Cache MIDI generator port latency
This reduces excessive, expensive calls to get_connected_latency_range()
2020-07-12 01:50:01 +02:00
Robin Gareus
ce47898639
Queue latency updates for initial connection
This may fix an issue with latency not being set correctly
on initial session-load (more common with Mixbus/JACK).
2020-07-12 01:48:45 +02:00
Robin Gareus
1796ee60b2
Clean up b5e479df and expose API to queue latency-updates 2020-07-12 00:38:56 +02:00
Robin Gareus
b5e479dfc3
Handle JACK latency callbacks in sync with process thread #8304
This is only relevant with JACK, where different implementations
use threads for the latency callback.

With jack 2, jack_port_register() blocks and the jack_latency_callback
arrives in a different thread: https://pastebin.com/mitGBwpq
with jack 1 the callback arrives in sync

In either case this usually happens while
_adding_routes_in_progress == true and Ardour holds the process-lock,
because jack2 can process in parallel with reconfiguring latency

See also 1983f56592
2020-07-12 00:15:26 +02:00
Robin Gareus
97025cf5a3
Improve debug message (tracking down JACK latency updates) 2020-07-11 23:38:44 +02:00
Robin Gareus
156c1e354a
Fix recursive locks when removing procs with a sidechain - #8301
When removing a plugin-insert that has a sidechain on a bus
that is implicitly soloed the following happens:

 * Route::remove_processor() takes a  WriterLock(_processor_lock)
 * The sidechain input is disconnected
 * Route::sidechain_change_handler() is called which calls
 * Route::input_change_handler()
 * Since the route is implicitly soloed, propagation is attempted
   which calls
 * Route::direct_feeds_according_to_reality()
   which takes ReaderLock(_processor_lock)

Recursive locks, reader-lock after writer-lock don't cause
a deadlock, releasing the reader-lock effectively also
releases the writer-lock...
2020-07-11 22:10:43 +02:00
Robin Gareus
edfca68494
Auto write-activate automation in latch mode
This allows to use of control-surfaces without touch-sensitivity
or mouse-wheel to write automation on demand (until transport stop).
2020-07-09 22:33:09 +02:00
Robin Gareus
ce8846d13f
Fix polygon redrawing -- #8148
Polygons used PolyLine::render() to render the path.
However since 7bb8ca1e76, the PolyLine path is constrained
(for automation lanes), and closed shaped polygons were not
always completely redrawn.
2020-07-09 02:10:28 +02:00
Robin Gareus
4d76388b8d
Remove no-inplace check from rt-context
This may fix a crash due to concurrency when _in_map changes
while the plugin runs and calls ::check_inplace()
2020-07-08 22:49:50 +02:00
Robin Gareus
308d138144
Fix audible blibs due to inconsistent monitor state -- #8275
It is possible that Route::monitoring_state() returns
  (MonitoringDisk | MonitorSilence)

This lead to various cases where there were is a direct comparison
(ms == MonitoringDisk). DiskReader::run tests for MonitoringDisk
to check if the buffer needs to be zeroed while locating.

Likewise Route::process_output_buffers() also explicitly tests
for both MonitoringDisk and MonitoringDisk.

The issue was likely introduced in fbe8075117 (although
it may have been possible in earlier version when using hardware
monitoring as well).
2020-07-07 18:53:36 +02:00
Vincenzo Reale
2379b2a5cf
Italian translation update 2020-07-06 20:28:02 +02:00
Paul Davis
06b71a50a1 Revert "clear PostTransportStop from post_transport_work immediately after Session::non_realtime_stop() has finished its work"
This reverts commit 132aae385a.

This commit was not properly thought out, and may not even have addressed a real problem.
2020-07-06 11:33:53 -06:00
Paul Davis
132aae385a clear PostTransportStop from post_transport_work immediately after Session::non_realtime_stop() has finished its work 2020-07-05 17:48:16 -06:00
Paul Davis
c1226eca73 add more info to DEBUG_TRACE output 2020-07-05 17:48:16 -06:00
Ben Loftis
0c7895298d Add Dotted option to a-delay, because dotted intervals cannot be expressed via the integer Divisor param 2020-07-05 15:24:38 -05:00
Edgar Aichinger
e35aaf5c28
update german translation 2020-07-01 15:47:52 +02:00
Robin Gareus
7fa7df0111
Remove unused variable
SoftwareMonitoring is handled by AudioTrack::get_input_monitoring_state
2020-06-30 23:25:41 +02:00
Robin Gareus
a3e30f72f0
Fix copy/paste mistake 2020-06-30 17:01:25 +02:00
Robin Gareus
1ecaffa642
Expose some more theme options to LV2 plugin UIs 2020-06-30 16:45:14 +02:00
Robin Gareus
92f54b3e98
Add API to query if systemic latency can be measured 2020-06-30 03:34:26 +02:00
Robin Gareus
a0bdf87720
Fix potential deadlock when adding sidechain port
Previously add_remove_sidechain() released the process-lock
(to create the I/O ports), while keeping a processor writer-lock.

Meanwhile the auto-connect thread may be woken up to perform
a latency update. This thread takes the process-lock and
then stalls, waiting for a processor reader-lock.

Then add_remove_sidechain() continues and tries to re-acquire
the process-lock.
2020-06-26 17:46:57 +02:00
Robin Gareus
fbcb0b6443
Add method to reset plugin statsistics 2020-06-26 13:01:45 +02:00
Robin Gareus
a006b8c412
Fix time_t <> long int ambiguity, 32bit builds
See 7cf68eaf72 for a detailed explanation.
2020-06-25 20:14:17 +02:00
Robin Gareus
7f5b3b9e33
Thin recent plugin stats, don't stats accumulate forever 2020-06-25 06:43:41 +02:00
Robin Gareus
148ca92518
Emit Signal when plugin-stats change 2020-06-25 04:59:00 +02:00
Robin Gareus
85034d0bca
Pass through DnDTV signal_drag_motion event 2020-06-25 02:24:02 +02:00
Robin Gareus
6d83e47860
Fix Plugin-preset saving when preset exists
Previously the GUI explicitly called remove_preset() before
saving a plugin-preset. This functionality is now moved
into the backend.

This fixes a case when a user tries to save/replace factory presets
and works around https://github.com/lv2/lilv/issues/37
2020-06-24 23:59:09 +02:00
Len Ovens
4717f7806d issue 8186 strip controls reset then show on select
Causes motor controls to jiggle on all strips
	when select changes. Fixed
2020-06-23 20:25:49 -07:00
Robin Gareus
2685728f59
Start collecting plugin stats and recently used plugins 2020-06-24 04:02:17 +02:00
Robin Gareus
40aac796e9
NO-OP: Plugin Tag/Status indent and const'ness 2020-06-24 03:24:54 +02:00
Porrumentzio
2ca1f55d6b
Updated and reworked Basque translation 2020-06-23 22:09:07 +02:00
Robin Gareus
91013a114b
Fix some compiler warning, -Wsign-compare
This also partially reverts 76c7e87c02.
2020-06-23 22:05:40 +02:00
Olivier Humbert
49352d0732
Fix an issue (reported by waf i18n_pot) in cs.po 2020-06-23 21:30:10 +02:00
Nikolaus Gullotta
76c7e87c02
Make Session::session_name_is_legal less magical 2020-06-23 14:27:42 -05:00
Robin Gareus
c313b006cf
LV2: keep track of supported properties
Register all plugin props that we may be interested in
to _property_values, and later intercept all messages for
registered properties (not just atom_Path).
2020-06-23 20:48:50 +02:00
Nikolaus Gullotta
cf0f1fd6c3
Fix undefined behaviour in Session::session_name_is_legal
The for loop was checking out of bound indicies causing some perfectly
legal session names to be identified as illegal
2020-06-23 13:33:51 -05:00
Len Ovens
32aa290578 issue 8243 select gets feedback past selected strips
make sure to drop old references when route is changed
2020-06-23 09:03:19 -07:00
Len Ovens
399192da4c OSC add width feedback to strips
Also detect panner type change
2020-06-22 23:29:11 -07:00
Robin Gareus
452607711b
Invalidate LV2 state on any property change
This amends 417c780d4, LV2 property changes to intercept messages
from custom UIs
2020-06-22 18:52:44 +02:00
Robin Gareus
417c780d44
Mark session as modified when LV2 properties are changed 2020-06-21 17:37:00 +02:00
Robin Gareus
1674261f89
On plugin internal-state change, mark preset as modified 2020-06-21 17:36:01 +02:00
Robin Gareus
ff8a6dd328
Fix mismatching parenthesis in translatable string 2020-06-21 16:59:28 +02:00
John Emmas
8cea355906 Moving Controllable::set_interface() into a 'cc' file makes it easier to fix our MSVC build issue (with min + max) 2020-06-20 09:38:00 +01:00
Ben Loftis
203e20a8df On solo_section ('A' key), invalidate playlist when we stop. Fixes #8253 2020-06-19 17:11:40 -05:00
Paul Davis
4053e8cb76 update german translation 2020-06-19 12:12:43 -06:00
Paul Davis
71f088dbbd move virtual method requiring std::min from header into .cc
The method is virtual so it could never have been inlined anyway
2020-06-18 16:26:44 -06:00
Paul Davis
0d8fac079d The presence of "using std::***" in any header file is not acceptable. Do not revert or change this.
Revert "Partially revert commit #23feb0491e"

This reverts commit 3b5546cfce.
2020-06-18 16:19:18 -06:00
John Emmas
3b5546cfce Partially revert commit #23feb0491e
For MSVC, the 'using std::' statements are needed when building anything which #includes 'pbd/controllable.h' (never quite figured out why...)
2020-06-18 12:46:05 +01:00
Robin Gareus
23feb0491e
Remove using std::min/max from header 2020-06-18 01:05:48 +02:00