diff --git a/gtk2_ardour/startup_fsm.cc b/gtk2_ardour/startup_fsm.cc index 5a22c79ed9..bf94c77ab9 100644 --- a/gtk2_ardour/startup_fsm.cc +++ b/gtk2_ardour/startup_fsm.cc @@ -199,6 +199,9 @@ StartupFSM::dialog_response_handler (int response, StartupFSM::DialogID dialog_i switch (_state) { case WaitingForPreRelease: switch (dialog_id) { + case ApplicationPseudoDialog: + /* this shouldn't happen; ignore it */ + break; case PreReleaseDialog: default: /* any response value from the pre-release dialog means @@ -217,6 +220,9 @@ StartupFSM::dialog_response_handler (int response, StartupFSM::DialogID dialog_i case WaitingForNewUser: switch (dialog_id) { + case ApplicationPseudoDialog: + /* this shouldn't happen; ignore it */ + break; case NewUserDialog: switch (response) { case RESPONSE_OK: @@ -262,6 +268,13 @@ StartupFSM::dialog_response_handler (int response, StartupFSM::DialogID dialog_i } break; + case ApplicationPseudoDialog: + /* macOS, NSM etc. ... existence was already checked */ + if (get_session_parameters_from_path (ARDOUR_COMMAND_LINE::session_name, string(), false)) { + start_audio_midi_setup (); + } + break; + default: /* ERROR */ break; @@ -895,7 +908,11 @@ Full information on all the above can be found on the support page at\n\ void StartupFSM::handle_path (string const & path) { - if (get_session_parameters_from_path (path, string(), false)) { - _signal_response (LoadSession); + if (!ARDOUR_COMMAND_LINE::session_name.empty()) { + return; } + + ARDOUR_COMMAND_LINE::session_name = path; + + dialog_response_handler (RESPONSE_OK, ApplicationPseudoDialog); } diff --git a/gtk2_ardour/startup_fsm.h b/gtk2_ardour/startup_fsm.h index 0c3f9e814a..21ad940d34 100644 --- a/gtk2_ardour/startup_fsm.h +++ b/gtk2_ardour/startup_fsm.h @@ -39,7 +39,8 @@ class StartupFSM : public sigc::trackable NewUserDialog, NewSessionDialog, AudioMIDISetup, - PluginDialog + PluginDialog, + ApplicationPseudoDialog, }; enum Result {