3a16b89219
Try harder to put the active item under the mouse (ArdourDropdown)
2019-10-30 23:56:36 +01:00
27a3b93152
Update latency-compensation when re-ordering processors
...
When re-ordering processors, the route's own latency does not
change (at first).
But it might if sends or plugins with side-chains a involved.
2019-10-30 23:51:53 +01:00
e2f5ce6f61
NO-OP: whitespace/comments
2019-10-30 23:45:27 +01:00
0711c87bfa
missing part of working looping
2019-10-29 16:20:04 -06:00
2b2b003d50
get looping to work again
2019-10-29 16:20:04 -06:00
c368c26519
fix handling of deferred events in transportFSM
...
tfsm events live on intrusive lists, with only 1 hook, which means they
can only be on one list at a time, and cannot be deleted while part of
the list. This wasn't being addressed properly when deferring (and
undeferring) events.
2019-10-29 16:20:04 -06:00
78cf0e5235
Customize Lua GC, add object-memory-lock API.
...
Add custom API to prevent Lua Objects from being garbage collected.
This is intended to for Ardour LuaBridge bindings (~1MB Objects:
tables, functions and userdata).
The bindings are persistent and the gc can skip them in mark & sweep
phases. This is a significant performance improvement for garbage
collection.
Note. The next version of Lua (5.4) will come with a generational-gc
rather than an incremental, so extending the API at this point in time
is acceptable.
2019-10-29 05:45:43 +01:00
130211a4bd
Update Lua to upstream 5.3.5
2019-10-29 05:36:24 +01:00
814272bbac
improve debug output
2019-10-28 17:34:38 -06:00
594f344cca
fix thinko
2019-10-28 17:34:23 -06:00
e2bb59a3e3
limit waveview render threads to 8
2019-10-28 17:24:21 -06:00
7d3c2a4fee
provide a mechanism to decide if Session::update_latency_compensation() is being called as part of a callback from the backend.
...
If it is, do not call AudioEngine::update_latencies() to avoid JACK1-style deadlock
2019-10-28 17:23:54 -06:00
706a9ab59f
fix mistakenly-placed semi-colon
2019-10-28 17:21:46 -06:00
b97e2d5013
to avoid deadlock in JACK1 scenarios, do not invoke AudioEngine::update_latencies() from update_latency_compensation() if called from a process thread
2019-10-28 16:55:29 -06:00
6b654039fb
better comments
2019-10-28 16:53:00 -06:00
43eb64d23b
add new debug bit (DebugTimestamps) that adds timestamps to all debug messages
2019-10-28 16:52:18 -06:00
4073e7573d
add DEBUG_TRACE for all (?) backend callbacks
2019-10-28 16:07:38 -06:00
5704f1ca9e
sort debug bits in libardour alphabetically
2019-10-28 15:55:01 -06:00
b4addf5297
add new debug bit for backend callbacks
2019-10-28 15:54:18 -06:00
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
8befc818eb
add explanatory comment
2019-10-28 13:40:18 -06:00
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
e4601e54e9
Improve 1477bca76
, ensure suil supports x11-in-gtk2
2019-10-28 17:24:54 +01:00
1477bca76e
Skip X11 LV2UI check on Windows and MacOS
2019-10-28 16:14:30 +01:00
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
1d20feef83
make transport work after rewind/ffwd are used
2019-10-27 11:17:49 -06:00
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
64af49f6c3
non-GUI startup should only use plugin cache and not discover new ones
2019-10-24 21:32:46 -06:00
362956dd7c
do not scan (discover) (new) plugins when running without a GUI
2019-10-24 21:32:46 -06:00
58e8fb7aab
alter ARDOUR::init() API to specify whether a GUI is in control or not
2019-10-24 21:32:46 -06:00
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
496e6f2a4c
New implementation for single-fader mackie devices (reverts b96d8e)
2019-10-22 14:39:38 -05:00
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
b96d8e7ffa
Add support for single-fader MCU devices: XTouch One and RuCo. (needs testing)
2019-10-20 22:24:32 -05:00
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
699a47cc65
Fix typo in bc363f1258
2019-10-19 02:15:13 +02:00
bc363f1258
Special case "Virtual Keyboard" to be available as external input
2019-10-18 23:40:40 +02:00
c4d7870c68
Allow to translate "Virtual Keyboard"
...
reserved_io_names[] already uses a translatable string for this.
2019-10-18 23:40:23 +02:00
eade673771
Expose virtual-keyboard port as async-port
2019-10-18 22:56:46 +02:00
f961fd4687
Add Virtual-Keyboard MIDI port
2019-10-18 03:42:41 +02:00
f4ebb5995d
NO-OP: indent, tabs/whitespace fixes
2019-10-18 03:41:45 +02:00
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
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
3ff1541825
Fix export w/o session-range (typo in 468731c14b
)
2019-10-15 23:17:48 +02:00
9fa7e919a7
Improve multi-channel instrument listing
2019-10-15 16:02:47 +02:00
32a97d242e
Fix typos in AU channel-count calc
2019-10-15 15:24:50 +02:00
bcd1391bf7
API to count max multi-channel plugin outputs
2019-10-15 14:48:32 +02:00
0b377fc393
Detect plugin-name ambiguities
2019-10-15 14:04:26 +02:00