diff options
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 13 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 12 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.h | 1 |
3 files changed, 24 insertions, 2 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 39bdc9280a..c368572e9c 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -5122,10 +5122,19 @@ ARDOUR_UI::do_audio_midi_setup (uint32_t desired_sample_rate) audio_midi_setup->set_desired_sample_rate (desired_sample_rate); audio_midi_setup->set_position (WIN_POS_CENTER); - int response; + // TODO make this a preference. + // (engine state is parsed by the GUI, but currently saved + // in preferences: ARDOUR::Config->extra_xml + // soooo where should this option go?) + if (getenv("TRY_AUTOSTART_ENGINE")) { + audio_midi_setup->try_autostart (); + if (ARDOUR::AudioEngine::instance()->running()) { + return 0; + } + } while (true) { - response = audio_midi_setup->run(); + int response = audio_midi_setup->run(); switch (response) { case Gtk::RESPONSE_OK: if (!AudioEngine::instance()->running()) { diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index da0e6168d9..be21170264 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -424,6 +424,18 @@ EngineControl::on_show () } bool +EngineControl::try_autostart () +{ + if (!start_stop_button.get_sensitive()) { + return false; + } + if (ARDOUR::AudioEngine::instance()->running()) { + return true; + } + return start_engine (); +} + +bool EngineControl::start_engine () { if (push_state_to_backend(true) != 0) { diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index faf12d7c98..8f47f2b5a3 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -49,6 +49,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { bool set_state (const XMLNode&); void set_desired_sample_rate (uint32_t); + bool try_autostart (); private: Gtk::Notebook notebook; |