diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 8e9df2c5c5..5e7d4f5a3e 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -1016,6 +1016,11 @@ EngineControl::backend_changed () */ engine_stopped (); // set "active/inactive" + if (!_have_control) { + // set settings from backend that we do have control over + set_active_text_if_present (buffer_size_combo, bufsize_as_string (backend->buffer_size())); + } + if (!ignore_changes) { maybe_display_saved_state (); } @@ -2015,6 +2020,13 @@ EngineControl::set_current_state (const State& state) // do the right thing backend_combo.set_active_text (state->backend); + if (!ARDOUR::AudioEngine::instance()->setup_required ()) { + backend_changed (); + // we don't have control don't restore state + return true; + } + + if (!state->driver.empty ()) { if (!backend->requires_driver_selection ()) { DEBUG_ECONTROL ("Backend should require driver selection");