13
0
Commit Graph

29823 Commits

Author SHA1 Message Date
6a6b3f2703 fix another iterator type 2020-04-02 19:45:31 -06:00
cb4997f4a4 fix iterator type 2020-04-02 19:45:31 -06:00
af69ac1285 use clear_ports() 2020-04-02 19:45:31 -06:00
6cdc245967 fix header name 2020-04-02 19:45:31 -06:00
7fc5a6c971 initial try (not compiled) of PortAudio backend using PortEngineSharedImpl 2020-04-02 19:45:31 -06:00
72925e4453 use _instance_name in all messages from PortEngineSharedImpl 2020-04-02 19:45:31 -06:00
e5507f7072 use PortEngineSharedImpl with PulseAudio backend 2020-04-02 19:45:31 -06:00
04551c39f6 use PortEngineSharedImpl with DummyAudioBackend 2020-04-02 19:45:31 -06:00
30766c75e8 buildable version of CoreAudio backend using PortEngineSharedImpl 2020-04-02 19:45:31 -06:00
a31d3689bf tentative changes to extend port engine shared impl to coreaudio 2020-04-02 19:45:31 -06:00
6c2e30b790 use new PortEngineSharedImpl in AlsaAudioBackend 2020-04-02 19:45:31 -06:00
9ea6f598bd add new file to wscript 2020-04-02 19:45:31 -06:00
9461a30a97 refactor shared PortEngine implementation from AlsaAudioBackend 2020-04-02 19:45:31 -06:00
9ac0d5b60f add RCU to manage _ports and _portmap in AlsaAudioBackend
This is intended to prevent crashes when unregister_port() modifies the contents of these
two members at the same time that something else is iterating over them.
2020-04-02 19:45:31 -06:00
714e2f1736
Optimize MTAV creation, speed up new MIDI track
This removes various duplicate code-paths leading to midi-model
updates, and expensive context-menu rebuilds. This significantly
speeds up MIDI track creation.
2020-04-03 03:42:56 +02:00
21c9505652
Allow to query current effective instrument model/mode
This exposes custom plugin model/mode. It can be useful for
the GUI to detect if effective settings have changed, and
context-menus have to be re-build.
2020-04-03 03:29:32 +02:00
dabd5715e9
Revert "move the point of adding a new MIDI track until *after* the instrument is added"
This reverts commit fac8d84786.

This fixes fan-out. The track should be created before any tracks or
busses are created that are fed by the MIDI track.

The apparent motivation for fac8d847 was MIDNAM related
(there was code in the GUI that needed the instrument, which was
called from within ::add_routes).

This should no longer be the case, the GUI needs to pick up
instrument changes after track creation via processors changed;
besides MIDI busses were still created before the instrument.
2020-04-02 21:43:16 +02:00
14f15ca1e9
Move RouteUI::fan_out to Mixer_UI
The previous version had various issues, in particular
when creating Tracks with an instrument, the RouteUI was not
available when the signal was emitted (likely caused by recent
ee-work of Audio+MIDI and Tape track removal).

However as side-effect fanned-out tracks/busses may now
be ordered before the new instrument route.

This also fixes an edge case of multiple fan-out in case
there is more than one RouteUI instance (mixer, editor-mixer,
meter-bridge).
2020-04-02 20:27:51 +02:00
f0b25a776b
Update fan-out signal
* Signals use camelcase.
* use a static signal, independent of the route

Previously the signal was handled by RouteUI, which
caused various issues:
 * the RouteUI may not yet be available
 * There may be many RouteUIs for a single Route
   (mixer, editor-mixer, meter-bridge strips)
2020-04-02 20:27:51 +02:00
652f62f20a
Remove signal in preparation to rework fan-out 2020-04-02 20:27:48 +02:00
Johannes Mueller
06dee15a18 Emit Locate() in ::locate() even if we are not synced_to_engine()
This reverts 05c77db773 (revert necessary due to 4637c49838)

Since 4637c49838 we no longer emit Located() in ::backend_sync_callback().
Therefore we must emit Located() in ::locate() even if we are
synced_to_engine().

Otherwise the playhead is not updated when synced_to_engine() in some
circumstances.
2020-04-02 18:39:46 +02:00
849bce6e4d
Add LTC output port preference #7932 2020-04-02 16:46:05 +02:00
Johannes Mueller
41fa647b69 Template descriptions no longer dirty when saved or changes discarded 2020-04-02 14:37:12 +02:00
Johannes Mueller
7a2e9bf224 Re-save templates if they have been loaded from an older version of Ardour 2020-04-02 14:37:12 +02:00
Johannes Mueller
64cb0a6e4b Let the user also choose template archives from Ardour 5.x 2020-04-02 14:37:12 +02:00
Johannes Mueller
687b3078c3 Don't issue VersionMismatch when creating a new session
When we create a new session and are using a template from an old version of
Ardour, we should not issue the VersionMismatch dialog and not make a copy of
the session file for the old version.

We need to extend the signature of Session::load_state() to tell it if we are
creating a session from a template. Session::_is_new cannot be used for it
because it has a the semantics if to auto connect the the master bus.
2020-04-02 14:33:21 +02:00
1439610f95
Restart Transport FSM after x-run halt #7951 2020-04-02 03:58:21 +02:00
163a065543
Fix gcc-4.2/PPC builds
Old STL has an issue with ambiguity
   reverse_iterator rend();
   const_reverse_iterator rend() const;
2020-04-02 03:43:29 +02:00
42af08fb92
Consolidate MIDNAM control display code 2020-04-01 23:26:13 +02:00
20ee430fda
Add API to count named MIDNAM controls 2020-04-01 23:25:19 +02:00
37bbc70179
Cache instrument plugin MIDNAM model & mode 2020-04-01 23:24:45 +02:00
a6c9c04fd6
Hide snap cursor when not using mouse edit #7966 2020-04-01 22:55:06 +02:00
75adc33629
Remove unused variable 2020-04-01 22:55:06 +02:00
38caf9ddd3 NOOP: whitespace 2020-04-01 10:10:50 -06:00
d9d9740f1c do not show xrun markers in the "Ranges & Marks" editor list 2020-04-01 10:10:50 -06:00
195fe0f712 add method to check for xrun status of a marker 2020-04-01 10:10:50 -06:00
98884e9736 rename variable (frames -> samples) 2020-04-01 10:10:50 -06:00
8d28115ec7
Update MIDNAM handling in GUI
* Always use InstrumentInfo for lookups.
  Remove name lookups that directly used gui_property()
* Use set/get_gui_property() only to save/restore state,
  push custom selection to InstrumentInfo.
* Only store custom selection, use unset for "default"
  default = plugin-provided (if available) otherwise general-midi
2020-04-01 16:33:40 +02:00
3b77472ac0
Overhaul InstrumentInfo
* Remove unused direct calls into plugin
* Assume empty model to mean plugin-provided MIDNAM (!)

The route owned Instrument-Info is the central access point used
by the GUI for MIDI name lookups.

At this point in time, custom settings are saved/restored by the
GUI (MidiTimeAxisView). InstrumentInfo provides a volatile store
for MIDNAM mode and model.
2020-04-01 16:31:58 +02:00
26c6d3c4c9 fix boolean logic PART FOUR when trying to avoid complete_refill heuristic
This reworking avoids some confusion caused by the use boost::optional here
2020-04-01 07:54:44 -06:00
76070cb8c2 fix boolean logic PART THREE when trying to avoid complete_refill heuristic 2020-03-31 21:47:39 -06:00
76b6c5ebfd fix boolean logic PART TWO when trying to avoid complete_refill heuristic 2020-03-31 21:44:42 -06:00
1c82fc4879 fix boolean logic when trying to avoid complete_refill heuristic 2020-03-31 21:14:07 -06:00
6d0434a3c5 change variable name and debug messages for underrun case (information was misleading/confusing) 2020-03-31 20:54:14 -06:00
0047dc383f clean up logic for declick out in DiskReader
This is intended to be a no-op that makes the code easier to read/reason about
2020-03-31 20:54:14 -06:00
88e84067f2 if a locate brings us within a heuristic-specified distance of the current position in a DiskReader, pay attention to loop status
If the last read was not looped, but the new one should be, we need to ignore the heuristic. Ditto for vice-versa.

This isomorphic with the read-reversed case
2020-03-31 20:54:14 -06:00
370f7bb30f
Propagate MIDNAM selection to Route
Most of Ardour's GUI queries route->instrument_info() for MIDNAM.
This is a minimal invasive hotfix to update the PatchChange
dialog and patch-names on the timeline when the MIDNAM selection
changes.

This got lost in de74cca6b8.
2020-04-01 00:53:27 +02:00
1aae553dae
Fix source list selection
Retain selection when showing context-menu.
2020-03-31 21:00:45 +02:00
bc1c3e5c21
Postpone disk-i/o setup during session-load
This fixes another assert(), caused by configuring processors,
before set_processor_state() was called.
Route::configure_processors() will be called later.

---
#3  0x00007ffff2472102 in __GI___assert_fail at assert.c:101
#4  0x00007ffff7a8ca1f in ARDOUR::Route::setup_invisible_processors() at ../libs/ardour/route.cc:5013
#5  0x00007ffff7a7a665 in ARDOUR::Route::configure_processors_unlocked at ../libs/ardour/route.cc:1870
#6  0x00007ffff7a79377 in ARDOUR::Route::configure_processors at ../libs/ardour/route.cc:1719
#7  0x00007ffff7a902c0 in ARDOUR::Route::set_disk_io_point at ../libs/ardour/route.cc:6041
#8  0x00007ffff7a7ea0a in ARDOUR::Route::set_state at ../libs/ardour/route.cc:2679
2020-03-31 19:48:17 +02:00
5253c7eb8b
Tweak error-dump (when session load fails)
When limiting the message count (e.g. for display in a dialog),
use reverse order, and only print errors.

When loading a session fails, the most recent error is
more likely the real cause.
2020-03-31 18:58:12 +02:00