Commit graph

15135 commits

Author SHA1 Message Date
Paul Davis
b4addf5297 add new debug bit for backend callbacks 2019-10-28 15:54:18 -06:00
Paul Davis
fe56c5931c do not hold a lock when calling AudioEngine::update_latencies() from Session::update_latency_compensation().
Only when using JACK1 is ::update_latencies() a synchronous call (ending up in Session::update_latency() which tries to take the
same lock). But the semantics of ::update_latencies() are sufficiently ill-defined that entering that call with a lock held
seems like a bad idea, so we release the lock unconditionally here.
2019-10-28 13:40:18 -06:00
Paul Davis
8befc818eb add explanatory comment 2019-10-28 13:40:18 -06:00
Paul Davis
7f1134e550 move reset (deletion) of click_io and ltc_output objects until after we are disconnected from the engine
We use those objects unconditionally and without caching inside process(), which could be invoked by the engine during their
deletion
2019-10-28 13:40:18 -06:00
Rui Nuno Capela
bd46b2df8e
Fixup prev commit (LV2 X11 UI) -- #7837 2019-10-28 17:31:03 +01:00
Robin Gareus
e4601e54e9
Improve 1477bca76, ensure suil supports x11-in-gtk2 2019-10-28 17:24:54 +01:00
Robin Gareus
1477bca76e
Skip X11 LV2UI check on Windows and MacOS 2019-10-28 16:14:30 +01:00
Robin Gareus
86337810fe
NO-OP: whitespace and comments 2019-10-28 16:14:24 +01:00
Rui Nuno Capela
760a7fda81
Prefer X11 Plugin UIs
Let LV2 Plugin UI support (via SUIL) prefer and select a X11 UI whenever
multiple UI type options are provided by LV2 plugins (eg. Vee-One's do
present several but their native Qt5UI should never be raised by Ardour,
on any chance:)).

  Signed-off-by: Rui Nuno Capela <rncbc@rncbc.or
2019-10-28 16:00:48 +01:00
Paul Davis
1d20feef83 make transport work after rewind/ffwd are used 2019-10-27 11:17:49 -06:00
Robin Gareus
c398576e4a
Fix latency compensation race-condition
Remove need for explicit `initialize_latencies` call that used
to be called from GUI-thread post_engine_init(), as well as
Session::engine_running().

Further reduce calls, `graph_reordered` implies a latency-update
and fix ordering issue. update_latency_compensation() must be called
*after* resort_routes().
2019-10-26 01:06:04 +02:00
Paul Davis
64af49f6c3 non-GUI startup should only use plugin cache and not discover new ones 2019-10-24 21:32:46 -06:00
Paul Davis
362956dd7c do not scan (discover) (new) plugins when running without a GUI 2019-10-24 21:32:46 -06:00
Paul Davis
58e8fb7aab alter ARDOUR::init() API to specify whether a GUI is in control or not 2019-10-24 21:32:46 -06:00
Robin Gareus
7060ba4c1d
Fix strict-i/o override on session-load (amend 31847f88ef)
Plugins may override strict-i/o, and in order to know do this
the plugin needs to be instantiate first.
2019-10-23 01:36:33 +02:00
Ben Loftis
496e6f2a4c New implementation for single-fader mackie devices (reverts b96d8e) 2019-10-22 14:39:38 -05:00
Robin Gareus
08a9368adf
Allow calling Dropdown::set_active from a signal handler
This breaks a potential recursion when set_active() is called
from activate_item(). See also 88fc22610
2019-10-21 14:58:59 +02:00
Ben Loftis
b96d8e7ffa Add support for single-fader MCU devices: XTouch One and RuCo. (needs testing) 2019-10-20 22:24:32 -05:00
Robin Gareus
88fc226107
Add API to set select item from ArdourDropdown
This fixes an issue with scroll-wheel control which uses `get_active()`.
It work around an issue with gtkmm:

 const MenuItem* get_active () const
 void set_active (guint index)

and MenuList::activate_item() not emitting activate_item().
2019-10-20 21:21:57 +02:00
Robin Gareus
699a47cc65
Fix typo in bc363f1258 2019-10-19 02:15:13 +02:00
Robin Gareus
bc363f1258
Special case "Virtual Keyboard" to be available as external input 2019-10-18 23:40:40 +02:00
Robin Gareus
c4d7870c68
Allow to translate "Virtual Keyboard"
reserved_io_names[] already uses a translatable string for this.
2019-10-18 23:40:23 +02:00
Robin Gareus
eade673771
Expose virtual-keyboard port as async-port 2019-10-18 22:56:46 +02:00
Robin Gareus
f961fd4687
Add Virtual-Keyboard MIDI port 2019-10-18 03:42:41 +02:00
Robin Gareus
f4ebb5995d
NO-OP: indent, tabs/whitespace fixes 2019-10-18 03:41:45 +02:00
Robin Gareus
b4cbee724e
Fix a rare EventList race-condition/crash
The GUI thread may modify fade-in/out while the butler-thread
reads audio.

e.g. select a Range and click delete.
---
Thread 0:: Dispatch queue: com.apple.main-thread
0   libsystem_pthread.dylib           0x00007fffd45924fc pthread_mutex_lock + 0
1   libglib-2.0.0.dylib               0x00000001085a9d2a g_mutex_lock + 26
2   libevoral.dylib                   0x0000000107fd0a49 PBD::Signal0<void, PBD::OptionalLastValue<void> >::operator()() + 57
3   libevoral.dylib                   0x0000000107fd486d Evoral::ControlList::clear() + 253
4   libardour.dylib                   0x00000001072ef9a5 ARDOUR::AudioRegion::set_fade_out(ARDOUR::FadeShape, long long) + 309
5   libardour.dylib                   0x00000001072f19ea ARDOUR::AudioRegion::recompute_at_end() + 122
6   libpbd.dylib                      0x00000001082993ff PBD::Stateful::resume_property_changes() + 191
7   libardour.dylib                   0x00000001076476af ARDOUR::Playlist::cut(long long, long long, bool) + 575
8   libardour.dylib                   0x0000000107646b5b ARDOUR::Playlist::cut_copy(boost::shared_ptr<ARDOUR::Playlist> (ARDOUR::Playlist::*)(long long, long long, bool), std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 187
9   libardour.dylib                   0x0000000107647461 ARDOUR::Playlist::cut(std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 33
10  Ardour.bin                        0x00000001065f0fa0 RouteTimeAxisView::cut_copy_clear(Selection&, Editing::CutCopyOp) + 592
11  Ardour.bin                        0x0000000106118a94 Editor::cut_copy_ranges(Editing::CutCopyOp) + 164
12  Ardour.bin                        0x0000000106116053 Editor::cut_copy(Editing::CutCopyOp) + 1587


Thread 20 Crashed:
0   libardour.dylib                   0x00000001072f4b19 ARDOUR::AudioRegion::body_range() const + 89
1   libardour.dylib                   0x00000001072bd318 ARDOUR::AudioPlaylist::read(float*, float*, float*, long long, long long, unsigned int) + 1176
2   libardour.dylib                   0x00000001072ac236 ARDOUR::AudioDiskstream::read(float*, float*, float*, long long&, long long, int, bool) + 854
3   libardour.dylib                   0x00000001072abbb8 ARDOUR::AudioDiskstream::overwrite_existing_buffers() + 392
4   libardour.dylib                   0x00000001077ef36a ARDOUR::Session::non_realtime_overwrite(int, bool&) + 186
5   libardour.dylib                   0x00000001077ed7f0 ARDOUR::Session::butler_transport_work() + 1696
6   libardour.dylib                   0x0000000107323425 ARDOUR::Butler::thread_work() + 149
7   libardour.dylib                   0x000000010732334f ARDOUR::Butler::_thread_work(void*) + 95
2019-10-18 01:41:18 +02:00
Robin Gareus
88f9aaff7d
Add API to safely query timestamp of first/last control event
Direct calls to back()->when or front()->when are not safe
when the list is concurrently modified, or empty.
2019-10-18 01:37:56 +02:00
Robin Gareus
3ff1541825
Fix export w/o session-range (typo in 468731c14b) 2019-10-15 23:17:48 +02:00
Robin Gareus
9fa7e919a7
Improve multi-channel instrument listing 2019-10-15 16:02:47 +02:00
Robin Gareus
32a97d242e
Fix typos in AU channel-count calc 2019-10-15 15:24:50 +02:00
Robin Gareus
bcd1391bf7
API to count max multi-channel plugin outputs 2019-10-15 14:48:32 +02:00
Robin Gareus
0b377fc393
Detect plugin-name ambiguities 2019-10-15 14:04:26 +02:00
Robin Gareus
7e5120e7c9
NO-OP: indent, comments and consistency 2019-10-15 12:26:14 +02:00
Robin Gareus
7fb259ece2
Fix fan-out channel-assignment 2019-10-13 23:12:38 +02:00
Robin Gareus
52eea55988
Remove unused API declaration (removed in 789f08891b) 2019-10-13 04:12:02 +02:00
Paul Davis
bfb998ca0a remove Session::AudioMidiSetupRequired signal (no longer necessary) 2019-10-12 12:45:13 -06:00
Paul Davis
789f08891b remove responsibility for starting AudioEngine from Session 2019-10-11 10:25:32 -06:00
Paul Davis
3294f193fd make error message very slightly more indicative of what might be happening when audioengine backend fails to start 2019-10-10 16:52:00 -06:00
Paul Davis
af82a06517 make BusProfile argument to new Session constructor be const (and in associated call tree) 2019-10-10 16:52:00 -06:00
Paul Davis
dd29e9b0e9 remove unnecessary template methods (replicated in libs/gtkmm2ext/doi.h 2019-10-10 16:52:00 -06:00
Robin Gareus
2c33d31bbb
NO-OP: whitespace 2019-10-10 23:59:05 +02:00
Robin Gareus
42df310c6f
Add "List/Browse" vector icon 2019-10-10 23:58:49 +02:00
Paul Davis
95676a5f66 add constructor 2019-10-07 20:50:08 -06:00
Robin Gareus
c663a2d8ef
Invert Pan-Azimuth (up means left)
It's a well established convention that pan y-axis automation,
or vertical uses (top) +1 for left.

This special cases rotary knobs (and horizontal sliders) to retain
a clockwise movement (or movement to the right) for panning to the
right.
2019-10-07 05:07:55 +02:00
Paul Davis
f470d3e856 remove all use of NO_PLUGIN_STATE #ifdef
We determined several years that we should never ever do this,
and changed the basis for the free/demo copy because of that.
2019-10-02 18:04:40 -06:00
Robin Gareus
bc3b658349
Prefer portable (MSVC?) getenv (amend 5ea54be) 2019-10-02 23:14:58 +02:00
Robin Gareus
5ea54beff1
Allow ARDOUR_AVG_DSP_LOAD for non-debug builds 2019-10-02 22:55:55 +02:00
Robin Gareus
27f6754f1a
Amend 903c3ec5a API rename 2019-10-02 21:28:13 +02:00
Robin Gareus
a7cb2055ec
Plugin type lookup does not change PI 2019-10-02 19:35:03 +02:00
Robin Gareus
539b61f127
Remove unused API (and some MIXBUS specifics) 2019-10-02 19:29:52 +02:00