Commit Graph

16764 Commits

Author SHA1 Message Date
Robin Gareus
a5140f4558 Handle Lua DSP script load failure (unknown plugin)
This handles a very specific edge-case: A script that was
successfully parsed before, fails load on session state restore.
2019-11-01 15:54:36 +01:00
Robin Gareus
7852047dca Fix XML-writer edge-case (empty content) 2019-11-01 15:39:44 +01:00
Robin Gareus
eca27d8218 Fix MIDI Timestretch
* skip notes outside of region-range (source-start, region-length)
* handle tempo-ramps properly, apply map to stretch-fraction
* fix region properties after stretching
  (position needs to be re-set first, to set a midi-region's
   quarter-note position, which is used by the length calc)
2019-11-01 05:40:30 +01:00
Julien "_FrnchFrgg_" RIVAUD
3cae11936f Highlight the currently selected item in ArdourDropdown & co 2019-10-31 14:38:26 +01:00
Julien "_FrnchFrgg_" RIVAUD
016db85fa1 Workaround a GTKMenu bug in ArdourDropdown & co. 2019-10-31 14:21:57 +01:00
Julien "_FrnchFrgg_" RIVAUD
07458155a2 Work around an initialization bug of GTK menus 2019-10-31 11:34:36 +01:00
Julien "_FrnchFrgg_" RIVAUD
eaba4fa593 Update |offset| instead of changing the formula
So that the test to see if it fits also takes the new offset into
account.
2019-10-31 10:42:37 +01:00
Julien "_FrnchFrgg_" RIVAUD
fb9203998b Align vertical centers of widget and active menuitem 2019-10-31 10:29:43 +01:00
Julien "_FrnchFrgg_" RIVAUD
7d48b20652 Fix a thinko in x position of menu popups
This has lasted without being noticed because menus that big are not
common.
2019-10-31 10:29:43 +01:00
Robin Gareus
5e4d641488 NO-OP: whitespace 2019-10-31 00:22:26 +01:00
Robin Gareus
98db30efb1 Declare helper function static (don't export) 2019-10-31 00:22:12 +01:00
Julien "_FrnchFrgg_" RIVAUD
3a16b89219 Try harder to put the active item under the mouse (ArdourDropdown) 2019-10-30 23:56:36 +01:00
Robin Gareus
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
Robin Gareus
e2f5ce6f61 NO-OP: whitespace/comments 2019-10-30 23:45:27 +01:00
Paul Davis
0711c87bfa missing part of working looping 2019-10-29 16:20:04 -06:00
Paul Davis
2b2b003d50 get looping to work again 2019-10-29 16:20:04 -06:00
Paul Davis
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
Robin Gareus
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
Robin Gareus
130211a4bd Update Lua to upstream 5.3.5 2019-10-29 05:36:24 +01:00
Paul Davis
814272bbac improve debug output 2019-10-28 17:34:38 -06:00
Paul Davis
594f344cca fix thinko 2019-10-28 17:34:23 -06:00
Paul Davis
e2bb59a3e3 limit waveview render threads to 8 2019-10-28 17:24:21 -06:00
Paul Davis
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
Paul Davis
706a9ab59f fix mistakenly-placed semi-colon 2019-10-28 17:21:46 -06:00
Paul Davis
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
Paul Davis
6b654039fb better comments 2019-10-28 16:53:00 -06:00
Paul Davis
43eb64d23b add new debug bit (DebugTimestamps) that adds timestamps to all debug messages 2019-10-28 16:52:18 -06:00
Paul Davis
4073e7573d add DEBUG_TRACE for all (?) backend callbacks 2019-10-28 16:07:38 -06:00
Paul Davis
5704f1ca9e sort debug bits in libardour alphabetically 2019-10-28 15:55:01 -06:00
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