reintroduce code that can automatically connect to JACK under the right conditions

This commit is contained in:
Paul Davis 2019-10-12 12:10:10 -06:00
parent e6901dca30
commit b490115d5f
2 changed files with 53 additions and 10 deletions

View File

@ -231,15 +231,7 @@ StartupFSM::dialog_response_handler (int response, StartupFSM::DialogID dialog_i
*/
break;
case 0:
_state = NeedEngineParams;
session_dialog->hide ();
delete session_dialog;
session_dialog = 0;
current_dialog_connection.disconnect();
if (!session_is_new && session_existing_sample_rate > 0) {
audiomidi_dialog.set_desired_sample_rate (session_existing_sample_rate);
}
show_audiomidi_dialog ();
start_audio_midi_setup ();
break;
}
break;
@ -313,6 +305,57 @@ StartupFSM::show_audiomidi_dialog ()
audiomidi_dialog.present ();
}
void
StartupFSM::start_audio_midi_setup ()
{
bool setup_required = false;
if (AudioEngine::instance()->current_backend() == 0) {
/* backend is unknown ... */
setup_required = true;
} else if (session_is_new && AudioEngine::instance()->running() && AudioEngine::instance()->sample_rate () == session_existing_sample_rate) {
/* keep engine */
warning << "A running engine should not be possible at this point" << endmsg;
} else if (AudioEngine::instance()->setup_required()) {
/* backend is known, but setup is needed */
setup_required = true;
} else if (!AudioEngine::instance()->running()) {
/* should always be true during startup */
if (AudioEngine::instance()->start()) {
setup_required = true;
}
}
if (setup_required) {
_state = NeedEngineParams;
if (session_dialog) {
session_dialog->hide ();
delete_when_idle (session_dialog);
session_dialog = 0;
}
current_dialog_connection.disconnect();
if (!session_is_new && session_existing_sample_rate > 0) {
audiomidi_dialog.set_desired_sample_rate (session_existing_sample_rate);
}
show_audiomidi_dialog ();
} else {
/* XXX should we reset _state to something meaningul here (e.g. "Done")? */
if (session_dialog) {
session_dialog->hide ();
delete_when_idle (session_dialog);
session_dialog = 0;
}
current_dialog_connection.disconnect ();
_signal_response (LoadSession);
}
}
bool
StartupFSM::get_session_parameters_from_command_line (bool new_session_required)
{
@ -762,4 +805,3 @@ Full information on all the above can be found on the support page at\n\
pre_release_dialog->set_position (WIN_POS_CENTER);
pre_release_dialog->present ();
}

View File

@ -92,6 +92,7 @@ class StartupFSM : public sigc::trackable
void queue_finish ();
bool ask_about_loading_existing_session (const std::string& session_path);
int check_session_parameters (bool must_be_new);
void start_audio_midi_setup ();
NewUserWizard* new_user_wizard;
EngineControl& audiomidi_dialog;