Commit graph

20132 commits

Author SHA1 Message Date
Robin Gareus
6f858b51d2 speed up track creation
For every added Trackview/Mixerstrip, Ardour looks up GUI properties which
results in a total of 13 calls for the initial default items per track:
("height", "visible", "layer-display", "strip-width")

Since the tracks don't yet exist, the properties don't either.
Every lookup result in iterating over all all XMLNotes and for every
"Object". ->property ("id") and ->value () allocates memory.

Adding 64 tracks to an empty session results in 528293 string
allocations and deallocations in XMLNode::property() taking ~30%
of the track creation time.

This commit XMLnode's const method to prevent memory allocation
and caches a pointer to the XMLNode* to skip iterating over object
state.
2016-05-03 14:27:36 +02:00
Robin Gareus
255b5174c4 add a const method to check for existing key/value properties
handy to lookup up XMLNodes with "id" == ID w/o allocating memory.
2016-05-03 03:03:00 +02:00
Robin Gareus
c2e4cd2c6a use same tooltip timeout throughout Ardour -- part two 2016-05-02 20:24:54 +02:00
Robin Gareus
42e2cc0976 use same tooltip timeout throughout Ardour -- part one 2016-05-02 20:24:46 +02:00
Robin Gareus
9b49b29061 _plugin_display can be a LuaPluginDisplay 2016-05-02 17:12:42 +02:00
Robin Gareus
06fd881672 remove a stray semicolon 2016-05-02 15:44:13 +02:00
Robin Gareus
1fc50d4c9f Export format GUI updates for loudness normalization 2016-05-02 15:44:13 +02:00
Robin Gareus
d01cb7910f Add loudness normalization to Export Format & Graph 2016-05-02 15:44:13 +02:00
Robin Gareus
7547f02c07 prepare loudness normalization 2016-05-02 15:44:13 +02:00
Robin Gareus
bd461fe202 tweak AU redrawing blocking heuristics 2016-05-01 20:02:22 +02:00
Robin Gareus
35c01e552f increase visibility of actual compiler warnings 2016-05-01 20:02:22 +02:00
Robin Gareus
cafa1b1b4d Rhythm Rodent updates:
* fix aubio parameters (aubio-vamp picks them up on reset)
* group settings by Mode
* add new aubio4 functions and param
2016-05-01 18:48:27 +02:00
Robin Gareus
9d50074a99 fix aubio-onset detection parameters 2016-05-01 18:47:14 +02:00
Robin Gareus
5f65964ee9 add option to auto-save post-export-analysis image
first revision, needs some label position fine-tuning and maybe
an option to include log-scale/rect waveform etc.
2016-05-01 18:09:37 +02:00
Robin Gareus
13b9476f40 fix plugin-creator display for non LADSPA plugins
e.g. "u-he"
2016-05-01 16:27:11 +02:00
Robin Gareus
e6b95a3d65 fix a Wsigncompare and 2 -Wuninitialized 2016-05-01 13:35:30 +02:00
Robin Gareus
4727fa337d fix: gcc4.2 / PPC compilation
no match for 'operator!=' in 'x != std::list<_Tp, _Alloc>::rend()
[with _Tp = long long int, _Alloc = std::allocator<long long int>]()'
2016-05-01 13:20:53 +02:00
Robin Gareus
7bed91938b fix adding favorite plugins post-fader 2016-05-01 13:11:43 +02:00
Robin Gareus
b85de06669 make region > Edit context menus identical 2016-05-01 02:02:32 +02:00
Robin Gareus
32fcc42fb4 NO-OP use spaces throughout the menu file, remove trailing whitespace. 2016-05-01 02:02:29 +02:00
Robin Gareus
8fe2a308a5 GUI updates for transient rework 2016-05-01 02:02:25 +02:00
Robin Gareus
82d1d7ef0b various transient-detection fixes (split region, trim, move, undo,..)
* all API calls use session-time (allow region-lists)
* per-region transients are separated in
  - Onset (Rhythm Rodent, Aubio)
  - User-added
  - internal/source (QM), used as fallback for next/prev (read-only)
2016-05-01 02:02:04 +02:00
Robin Gareus
791ac8f843 API call to be removed 2016-05-01 00:28:54 +02:00
Paul Davis
84de618047 use CFRunLoopTimer to check the effect of plugin redrawing, not a glib idle 2016-04-30 13:20:08 -04:00
Paul Davis
8b52b69810 make BasicUI (for control surfaces) loop toggle work like the GUI 2016-04-30 10:54:40 -04:00
Robin Gareus
a725fde23d enable luaproc presets 2016-04-29 18:34:41 +02:00
Robin Gareus
6d49e24503 implement lua plugin presets 2016-04-29 18:34:27 +02:00
Robin Gareus
69bd02bd25 remove skeleton backend (superseded by portaudio) 2016-04-29 16:43:09 +02:00
Robin Gareus
69f99ee184 I wanna be nasty, I wanna be cruel,..
Somme disastrous signal generators for QA.
2016-04-29 16:10:09 +02:00
Paul Davis
d574039dd4 clean up of displayIfNeeded hack code
Remove most debug output (not all). Rename variables and functions. Add comments
2016-04-29 08:20:01 -04:00
Robin Gareus
29053585a5 save custom favorite plugin order (revert when merging VCA2) 2016-04-29 02:58:01 +02:00
Robin Gareus
d6fb182e9b add Lua DSP plugin category 2016-04-29 02:57:57 +02:00
Robin Gareus
1888104f8d remove "Lua DSP Proc" context meuu 2016-04-29 02:57:51 +02:00
Robin Gareus
25f65d0b90 include lua processors in plugin-selector 2016-04-29 02:57:48 +02:00
Robin Gareus
e56c8f0309 don't special case lua processors, use plugin-manager 2016-04-29 02:57:42 +02:00
Paul Davis
961e7ecdc8 clever tricks with code swizzling to slow down errant plugin GUIs for AU
This commit swizzles (replaces) NSView::displayIfNeeded to allow us to stop redraws of plugin
windows if the Glib idle timer fires less often then every 40msec. The next 10 plugin redraws
(for all plugin windows combined) will be skipped. Heuristics will likely need some adjustments
2016-04-28 18:42:04 -04:00
Robin Gareus
7f1bd3c941 consolidate and re-order luasession code 2016-04-28 21:38:09 +02:00
Robin Gareus
17d782829e flush pending Session Events at session close
This prevents a memory leak: The session is closed.
The session-butler drops memory pool trash. The Engine keeps running.

Once the AudioEngine is taken down (sample-rate switch, or at exit),
the backend process-thread is terminated but there is no trash-can anymore.

If there are unprocessed SessionEvents, this calls
free_per_thread_pool() -> cp->parent()->add_to_trash (cp).
"parent()" in this case the trash-can the butler emptied.
2016-04-28 21:37:18 +02:00
Robin Gareus
633f218911 fix a deadlock with jack2 when inserting a plugin adds ports.
When adding a processor, the processor may add ports leading to
a call to jack_port_register(). while Ardour holds a WritertLock on the
processor-list (this commit removes this WriterLock).

with jack2 that results in a graph-reorder callback (WHY?)

jack2 issues that graph-reorder in a separate thread BUT
port-registration does not return until the graph-reorder is complete.

On Ardour's side, graph_reordered() calls Session::resort_routes ()
which eventually checks Route::direct_feeds_according_to_reality()
which needs a ReadLock on the processor-list to check I/O.

Since jack_port_register() does not return, this constitutes a deadlock.

THE ACTUAL PROBLEM IS JACK2's THREAD DESIGN!
Why does jack_port_register() trigger a graph-order in jack2?
No connections are made.
..and why does it block jack_port_register() from returning if
that graph-order callback is in a different thread?
http://pastebin.com/DZANXJLz
2016-04-28 21:15:26 +02:00
Robin Gareus
d81547efb4 add a debug message for LV2 per port buffer allocation 2016-04-28 12:27:53 +02:00
Robin Gareus
11b2bcbde3 for mixed-i/o show HW ports of both types in the matrix
e.g. sidechain inputs with audio and midi.
2016-04-28 02:52:16 +02:00
Paul Davis
3d07cfce10 remove unnecessary lines+changes 2016-04-27 20:14:10 -04:00
Paul Davis
04d86ebd8d fix logic bomb 2016-04-27 20:12:15 -04:00
Paul Davis
42983959d2 if built on OS X without live resizing features, make AU plugin windows non-user-resiable 2016-04-27 19:59:40 -04:00
Paul Davis
c0673497a6 add a new configure-time for Cocoa live resizing macros
These were added in 10.6 but we're trying to be nice and look for the feature,
not some version
2016-04-27 19:59:40 -04:00
Ben Loftis
b961c1d8f2 another attempt to use platform-specific path for the default VST path 2016-04-27 17:39:38 -05:00
Robin Gareus
370b507d45 amend c1c81a239c after testing 2016-04-27 23:52:34 +02:00
Robin Gareus
c8a46a6502 some linuxVST GUI details: initialize lock, add a note. 2016-04-27 23:34:55 +02:00
Robin Gareus
b3e12d6566 pin connection GUI for variable I/O plugins 2016-04-27 23:34:55 +02:00
Robin Gareus
c30b47f0eb allow to customize variable i/o plugin inputs 2016-04-27 23:34:55 +02:00