Commit Graph

35961 Commits

Author SHA1 Message Date
63c068227f
Improve DR refill error messages to aid debugging 2022-08-11 19:14:51 +02:00
9453802248
Fix "when refilling, cannot write" disk-reader bug
This happened initially during session load.
The GUI thread performed a direct refill (blocking wait)

`Session::post_engine_init() -> Track::seek() -> DiskReader::seek() -> DiskReader::do_refill_with_alloc()`

while concurrently the butler thread does the same:

```
Session::butler_transport_work() -> Track::non_realtime_locate() -> Route::non_realtime_locate()
-> DiskIOProcessor::non_realtime_locate() -> DiskReader::seek() -> DiskReader::do_refill_with_alloc()
-> DiskReader::refill_audio()
```

We do not want the GUI to wait, so now we just request a locate
and let refill happen in the background.
2022-08-11 19:14:51 +02:00
7aef0cd191 fader colors: use correct UIConfig var name and exclude master bus correctly 2022-08-11 08:45:31 -06:00
870a51b691 fader coloring: ignore master, and rename UIConfig option to be more generic now (also text in prefs) 2022-08-11 08:22:49 -06:00
04ad500998 set mixer strip fader name always, so that bg is set from style 2022-08-11 00:07:53 -06:00
27f4302a7d ardourfader: more complete support for explicit fg 2022-08-11 00:07:30 -06:00
24253c20f3 remove no-longer-used method 2022-08-11 00:07:05 -06:00
340bba15f2 fix typo 2022-08-10 22:37:16 -06:00
6d85759cf8 optionally tinted faders in mixer view 2022-08-10 22:34:52 -06:00
9e8a5f15c9 optionall colored faders in editor 2022-08-10 22:34:36 -06:00
f8a77c7dcb add API to GainMeterBase to allow use of explicit fader colors 2022-08-10 22:34:33 -06:00
bfa40895b3 add 2nd method to RouteUI to get a (possible) variant of the route color for "tinting"
Currently returns the same value as ::route_color()
2022-08-10 22:33:40 -06:00
aee41bfba6 ardourfader: basic use of explicit fg/bg color 2022-08-10 22:32:42 -06:00
9ea1e5bdee move color utility functions from ARDOUR_UI_UTILS to Gtkmm2ext namespace (GUI) 2022-08-10 21:11:52 -06:00
a2e4897a49 move color utility functions from ARDOUR_UI_UTILS to Gtkmm2ext namespace (libs) 2022-08-10 21:11:46 -06:00
32c2ed3f21 ardourfader: further steps to per-fader colors 2022-08-10 18:26:49 -06:00
9459ca5583 ardourfader: beginning of per-fader color 2022-08-10 18:15:39 -06:00
e0d33bb726 cairowidget: add supplementary set_source_rgb_a() method that uses the uint32 Color type 2022-08-10 18:15:25 -06:00
5dbcd76cb1 led widget: disambiguate namespace for Color type 2022-08-10 18:14:28 -06:00
9178758f54 fix redisplay of track headers after changing track-name-numbering 2022-08-10 16:44:43 -06:00
8b28a284ba Cue markers must be centered after their text is assigned 2022-08-10 15:15:49 -05:00
df66482b89
Indicate current snapshot
Since 02b0ecdacb, the selected snapshot is no longer the currently
active one. This adds a dedicated indicator for this.
2022-08-10 03:20:29 +02:00
b5d96f0de2
Do not allow to delete the last snapshot
In case a user manually renames a session-folder and snapshot
it should still be impossible to delete the last snapshot
even if it is not named after the session-dir.

In theory this is impossible (one cannot delete the current snapshot)
2022-08-10 03:14:08 +02:00
6dc1e1f778 trigger strips: name button was intended to be colored
Gtk::Widget::modify_bg() will do nothing to a cairo widget
2022-08-09 17:36:14 -06:00
42cb321039 Amend previous commit (window settings, ignore size)
When loading a session it is preferable to use the window size from
Config's instant.xml (local machine screen sizes).
2022-08-10 01:00:29 +02:00
acf13e9498 Restore "Main" UI Tab setting from sesion instant.xml
Previously this setting was ignored. It is relevant when loading a demo
session, where initially there is no user Config instant.xml.

ARDOUR_UI::setup_windows is called directly after the engine starts, but
before the session is set.
2022-08-10 00:50:02 +02:00
bfedf7168e new GUI appearance option to offer track/bus colors (muted) as backgrounds for editor & mixer strips 2022-08-09 16:18:32 -06:00
c9446aa1e1 gtk2_ardour: set region marks into currently recording regions
Region actions are generally set insensitive whilst recording, so
special-case the "add-region-cue-marker" action by explicitly enabling it
when starting to roll in record. Additionally, the action becomes disabled
again after it's been executed, so re-enable it after queuing the cue when
recording.
2022-08-09 14:03:16 -06:00
cef86efe1b libs/ardour: allow creating region source markers while recording
Add a list of marker locations to the session, for the the UI to add the
current location to when "add-region-cue-marker" happens whilst recording.
On record-stop, create source markers at the locations in that list in all
newly-recorded audio regions.
2022-08-09 14:03:03 -06:00
f96946d566 remove more debugging output 2022-08-09 12:54:45 -06:00
5cc28b4024 remove debug output 2022-08-09 12:37:48 -06:00
1c59a2dff0 triggerbox/route: a cleaner method of ensuring trigger alignment
This change still runs the triggerbox during latency-preroll, but as with the disk reader,
the transport speed argument is set to zero. The triggerbox notices this and behaves
appropriately (I think !)
2022-08-09 12:33:37 -06:00
bedb94e534 triggerbox: do absolutely nothing if transport is moving backwards 2022-08-09 12:31:37 -06:00
dd5003eb1e triggerbox: must run when speed is zero
We only want to not run triggerbox during latency pre-roll
2022-08-09 09:29:46 -06:00
6ce804b4c9
Fix session-archives on macOS
When an archive are saved, a new folder in interchange/ is created,
named after the archive. However session-archive also retains files
in the session-folder that Ardour does not know about.

This can cause that the the original interchange folder is retained.
It will be empty with just the .DS_Store file in it. The result is
that the session may not load if there is an ambiguity.
2022-08-08 23:09:56 +02:00
f1226b6735
Fix session-archive, include Triggerbox Regions and Sources
This also consolidates code to collect used sources by checking
all playlists and all Triggerboxen, which have no playlists.
2022-08-08 23:03:53 +02:00
fab0cacb2c triggerbox: marginally more useful debugging output 2022-08-08 09:13:04 -06:00
34c6931807 triggerbox: fix up post-locate behavior following fix in Route 2022-08-08 09:13:04 -06:00
5eb4ea0148 NOOP: fix indentation 2022-08-08 09:13:04 -06:00
d65bc2a798 triggerbox: fix lack of alignment after a locate.
Triggerboxen were being executed during the latency preroll phase, which is
inappropriate. ::fast_forward() will prepare them to run at precisely the
correct time. So we add an explicit clause to avoid this.
2022-08-08 09:13:04 -06:00
20c942bb48
Fix endless loop when using "load session anyway"
Fixes a while-loop `break`, vs switch `break`.
2022-08-08 16:26:16 +02:00
902c36d019
Do not try to autostart engine for new users
This allows new user to select the soundcard and I/O settings
when loading demo sessions at first run, or when tricking Ardour
to open an existing session (try to create an existing session,
user may choose to load it instead).

Normally a user can only create a new session after first running
Ardour, and creating new sessions always shows the dialog (to
set the samplerate).
2022-08-08 03:50:54 +02:00
a10f001c97
Sync session and engine settings after reconfiguration 2022-08-07 18:57:46 +02:00
06717e9f84
Set TempoMap after sample-rate (map uses engine-rate) 2022-08-07 18:03:03 +02:00
b6921d1b14
Fix resampler config variable name (trailing comma) 2022-08-07 01:35:48 +02:00
39513ac8ad
Cleanup session (drop references) when session-load fails 2022-08-06 22:38:10 +02:00
0c01c50023
Add dialog option to reconfigure audio engine when S/R mismatches 2022-08-06 22:35:01 +02:00
93e6f5a882
Prepare to allow engine reconfiguration when SR mismatches
Rather than fail to load the session or load with mismatching
sample-rate, this will allow a user to reconfigure the engine
and retry.
2022-08-06 22:32:02 +02:00
7ee4f116f2
Fix crash when load session w/o engine
1. Start Ardour, load a session.
2. Stop the engine
3. Session > Recent, pick a recent session
4. Engine dialog opens
5. Close engine dialog without starting the engine
6. Profit^WCrash
2022-08-06 22:09:22 +02:00
7408a9958e
Fix duplicate UI initialization
When loading the very first session is canceled (e.g.
sample-rate mismatch -> Do not load session) or fails otherwise,
execution returns to the startupFSM.

Loading another session after that then takes the same path again:

StartupFSM::dialog_response_handler() -> StartupFSM::engine_running()
-> ARDOUR_UI::attach_to_engine()

The call needs to be idempotent, otherwise setup_windows(),
create_editor() etc are called a second time and Ardour crashes.
2022-08-06 21:44:55 +02:00