summaryrefslogtreecommitdiff
path: root/gtk2_ardour/startup_fsm.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-11-06 17:35:30 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-11-06 17:35:30 -0700
commiteda27cc3de7dda78aaf24edf0ba7e75e7a9df8b9 (patch)
tree5dc792543dbe1c9bcdf6e89872fba63b14a5635c /gtk2_ardour/startup_fsm.cc
parent88c4158c032e5f7700ad57872ca7a69793ff0c4f (diff)
move all responsibility for autostart into StartupFSM and out of engine dialog
Diffstat (limited to 'gtk2_ardour/startup_fsm.cc')
-rw-r--r--gtk2_ardour/startup_fsm.cc32
1 files changed, 23 insertions, 9 deletions
diff --git a/gtk2_ardour/startup_fsm.cc b/gtk2_ardour/startup_fsm.cc
index 599eb0e337..7d05ca051a 100644
--- a/gtk2_ardour/startup_fsm.cc
+++ b/gtk2_ardour/startup_fsm.cc
@@ -425,21 +425,35 @@ StartupFSM::start_audio_midi_setup ()
}
if (setup_required) {
- if (!session_is_new && session_existing_sample_rate > 0) {
- audiomidi_dialog.set_desired_sample_rate (session_existing_sample_rate);
- }
- if (!session_is_new && (Config->get_try_autostart_engine () || g_getenv ("ARDOUR_TRY_AUTOSTART_ENGINE"))) {
+ /* Note: if autostart is enabled, and starting the engine is
+ * successful, but the session SR differs, there will be no
+ * chance to reset it.
+ *
+ * We could change this trivially with a call to
+ * AudioEngine::set_sample_rate(), but that opens a can of
+ * worms about policy, UX, GUI and more, because it isn't clear
+ * whether that's the correct thing to do. So for now (Nov
+ * 2019) we simply try the autostart if the user asked for it,
+ * and if necessary a session SR mismatch dialog will appear
+ * during loading.
+ */
- audiomidi_dialog.try_autostart ();
+ if (!session_is_new && (Config->get_try_autostart_engine () || g_getenv ("ARDOUR_TRY_AUTOSTART_ENGINE"))) {
- if (ARDOUR::AudioEngine::instance()->running()) {
- DEBUG_TRACE (DEBUG::GuiStartup, "autostart successful, audio/MIDI setup dialog not required\n");
- engine_running ();
- return;
+ if (!AudioEngine::instance()->start ()) {
+ if (ARDOUR::AudioEngine::instance()->running()) {
+ DEBUG_TRACE (DEBUG::GuiStartup, "autostart successful, audio/MIDI setup dialog not required\n");
+ engine_running ();
+ return;
+ }
}
}
+ if (!session_is_new && session_existing_sample_rate > 0) {
+ audiomidi_dialog.set_desired_sample_rate (session_existing_sample_rate);
+ }
+
show_audiomidi_dialog ();
DEBUG_TRACE (DEBUG::GuiStartup, "audiomidi shown and waiting\n");