Commit Graph

26989 Commits

Author SHA1 Message Date
Paul Davis
dd4c788d3e add syntactic sugar for fetching toggle and radio actions 2018-12-06 22:12:34 -05:00
Robin Gareus
927a33c5f3 Remove redundant call (there's no session, nothing to save) 2018-12-07 03:46:58 +01:00
Robin Gareus
d864f42d20 Fix editor sizing issue introduced in 4dc65e66
Previously Editor::instant_save() returned if no session was loaded,
effectively Config->add_instant_xml(get_state()); was never called.

instant save() is called early on, in Editor's c'tor before the editor
is realized and saves invalid window-size and window-state, which
are used later.
2018-12-07 03:46:47 +01:00
Robin Gareus
4dc65e6613 Prefer testing the session instead of using a global variable 2018-12-06 02:24:31 +01:00
Robin Gareus
bf874562ef Fix inconsistent session-check
under some circumstances, e.g. session-exit it is possible to to have
inconsistent information
    ARDOUR_UI::instance()->session_loaded == true
 && ARDOUR_UI::instance()->the_session() == NULL

This lead to a crash on MacOS/X. stopping the engine at exit may destory
an Aggregate Device, leading to DeviceListChanged which in turn updates
the engine-dialog..
 else if (ARDOUR_UI::instance()->session_loaded) {
   float active_sr = ARDOUR_UI::instance()->the_session()->nominal_sample_rate ();
2018-12-06 02:24:30 +01:00
Paul Davis
2eae3b5cd1 another replacement of ActionManager::get_action() by ActionMap::find_action() 2018-12-05 17:48:34 -05:00
Paul Davis
4423945643 start using ActionMap in preference to ActionManager 2018-12-05 17:33:06 -05:00
Paul Davis
eb48c14ec4 some ActionMap infrastructure to start removing ActionManager 2018-12-05 17:33:05 -05:00
Paul Davis
4d7e9d5706 add new variant of ActionMap::find_action()
This is more useful when replacing ActionManager::get_action
2018-12-05 17:33:05 -05:00
Robin Gareus
d6b5c23579 Fix generic plugin UI for plugins with only properties
e.g. reMID.lv2 has only a atom/file-property and no control-inputs.
2018-12-05 20:18:56 +01:00
Robin Gareus
c2652437da Skip silent sources on session-archive -- fixes #7699 2018-12-05 16:54:13 +01:00
Robin Gareus
863a6ade9e Prevent endless read of silent files
This fixes issues with analysis and archiving that rely on a readable
to return 0.

Note however that createSilent() uses max_samplecnt (INT64_MAX) by
default. This relies on a region setting the length of its missing
source.
2018-12-05 16:04:29 +01:00
Robin Gareus
5f3672eef0 Use atomic read for an atomic variable
This probably no real world effect since there is a mutex in the
loop that acts as a memory barrier.
2018-12-04 22:12:43 +01:00
Robin Gareus
9f1293bfe5 Tab to prev/next name-entry: skip only rec-armed tracks 2018-12-04 22:07:27 +01:00
Robin Gareus
aa8128cdf5 Fix logic-error in d1cf2163: hide info for optimized builds 2018-12-04 17:06:13 +01:00
Robin Gareus
80aa43b830 Expose DSP load window 2018-12-03 22:45:22 +01:00
Robin Gareus
78f749ef65 Don't show DSP stats of inserts that don't collect them. 2018-12-03 22:43:13 +01:00
Robin Gareus
d1cf21634f Special case Mixbus Chanstrip for load calculation
These processors don't have a UI, so their load stats are not easily
visible. The stats can still be queried via Lua API or DSP-load
overview window, so we retain this for debug builds.
2018-12-03 22:43:02 +01:00
Robin Gareus
b285559767 Consistent AU factory Preset IDs
Use AU's preset->presetNumber as identifier since std::map are sorted
this also indirectly sorts presets by preset-number. (user presets
start with a '/' and are listed first, sorted by name).

Since Presets are now identified by URI on session load (53a0199a0)
and AU user-presets can added/be removed (since ae4604a24b), simple
sequential numbering is no longer an option.
2018-12-03 20:45:06 +01:00
Robin Gareus
6877ac820b Don't invalidate AU preset on load
This works around async parameter-changed signal emission when loading
an AU preset. A simple timeout is used to delay making the preset
as modified.
2018-12-02 02:04:21 +01:00
Robin Gareus
c8d08338df GUI Updates for plugin save/delete operations 2018-12-02 01:38:14 +01:00
Robin Gareus
ae4604a24b Implement AU plugin-preset removal 2018-12-02 01:37:33 +01:00
Robin Gareus
53a0199a06 Restore actual plugin-preset on session-load
This checks if the preset is actually available on the given system
and also sets the user-flag correctly.
2018-12-02 01:36:32 +01:00
Robin Gareus
3c7dea43af Towards fixing AU preset invalidation
This is a step in the right direction: first load the preset and
only if preset-loading was successful mark it as loaded.

This still does not properly unset "parameter_changed_since_last_preset".
AU signals "kAudioUnitEvent_ParameterValueChange" later in the event-loop.
2018-12-02 00:26:57 +01:00
Robin Gareus
d53af10c92 AU: mark preset dirty when parameter changes 2018-12-01 05:36:33 +01:00
Robin Gareus
b66726fdc1 Fix AU preset handling
load_property_list() takes a file-path (not URI). Actually it's not
clear why we've ever used a `file:///` URI internally.
2018-12-01 05:33:26 +01:00
Robin Gareus
0ce0c47697 Night of the typos III (amend prev 2 commits) 2018-12-01 03:22:04 +01:00
Robin Gareus
c921a67123 Also use xjadeo 64bit windows version 2018-12-01 03:13:59 +01:00
Robin Gareus
6e0487fc1f Harvid and xjadeo now feature 32/64bit window version(s) 2018-12-01 00:56:20 +01:00
Robin Gareus
3a0a2902b5 Freeze harvid/xjadeo PPC version 2018-11-30 18:10:35 +01:00
Paul Davis
7801888810 fix incorrect accumulation of export video options each time the dialog is used 2018-11-29 17:43:17 -05:00
Robin Gareus
f443626daa Fix a tiny memory leak, add_instant_xml() copies the node 2018-11-29 14:25:52 +01:00
Robin Gareus
e42699600b Delete temporary Window Proxy for dialogs
There are two cases:
 (A) Proxy is created first, dialog is created later on demand
 (B) Dialog is created and directly registers its window as proxy

In (B) the dialog is usually on the stack and destroyed when the
ArdourDialog instances leaves scope. In that case ~ArdourDialog()
is called and the proxy remained.

Destroying the proxy does destroy the registered window in ~WindowProxy()
If ArdourDialog's d'tor itself deletes the proxy it would recurse into
itself. Existing APIs e.g. drop_window() likewise delete the window and
cannot be safely called from ~ArdourDialog.
2018-11-29 14:25:22 +01:00
Robin Gareus
fc24b9f0b7 Fix uninitialized variable 2018-11-29 02:10:08 +01:00
Robin Gareus
a22a501537 NO-OP: whitespace 2018-11-29 02:07:29 +01:00
Robin Gareus
1759d1c9c9 Fix a tiny memory-leak when calling vfork 2018-11-29 02:06:42 +01:00
Robin Gareus
6fc2804414 Disk I/O: only allocate midi-buffer if needed
This fixes a memory-leak (_midi_buf was allocated in DiskIOProc
but only delete in DiskReader). Also skip midi-refill early on
2018-11-29 02:05:26 +01:00
Robin Gareus
dfbda9e0f6 Fix a potential memory-corruption
Disk-writer run() can concurrently use the ringbuffer after it was
free()ed by the butler thread.
2018-11-28 21:41:30 +01:00
Robin Gareus
076e9fddd4 Remove ambiguous API implementation
* PortEngine::available() implementation
* AudioEngine::connected() wrapper

Eventually we may re-introduce PortEngine::available along
with a libardour internal port-engine.
2018-11-28 15:32:40 +01:00
Robin Gareus
81857a947c Consolidate ambiguous engine API calls
available(), connected(), running() were ill-defined and
used interchangeably.
2018-11-28 15:24:47 +01:00
Robin Gareus
df28a71252 Consolidate API, prefer ->running() 2018-11-28 15:19:39 +01:00
Robin Gareus
0805b6b925 Consolidate two more engine-checks 2018-11-28 15:17:57 +01:00
Robin Gareus
245d48dbd0 NO-OP: Clarify function name 2018-11-28 15:16:25 +01:00
Robin Gareus
76f9764a44 Use central method to check for engine for processor operations 2018-11-28 00:02:57 +01:00
Robin Gareus
f150f6c074 Use central method to check for engine where required
These are generally places where tracks/busses are created or port
connections change.
2018-11-28 00:01:50 +01:00
Robin Gareus
415721fa5b Prepare central engine check and user notification 2018-11-27 23:57:53 +01:00
Robin Gareus
1d8dc009f7 Catch potential exceptions when adding tracks/busses 2018-11-27 13:19:34 +01:00
Robin Gareus
57d7b5de65 GUI limitation: Require engine to add/remove tracks/busses 2018-11-27 13:18:39 +01:00
Robin Gareus
5531a440c9 Fix stuck connection block when template load fails.
Session::new_route_from_template() unconditionally calls
IO::disable_connecting(), and needs to be reverted likewise
(no RAII here).
2018-11-26 21:45:06 +01:00
Robin Gareus
dce81aecc5 Prevent deadlock when removing routes w/o engine 2018-11-26 03:31:02 +01:00