From 0cc4ee7b79644961967a60bd337b035e97517d4a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 4 Sep 2013 22:22:18 -0400 Subject: [PATCH] fix up restoration of saved state from disk, still incomplete --- gtk2_ardour/engine_dialog.cc | 66 +++++++++++++++++------------------- gtk2_ardour/engine_dialog.h | 1 + 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 4ad89a8dcf..ebdf60f4d6 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -303,47 +303,19 @@ EngineControl::device_changed () void EngineControl::sample_rate_changed () { - bool existing = true; - State* state = get_current_state (); - - if (!state) { - existing = false; - state = new State; - state->backend = backend_combo.get_active_text (); - state->driver = driver_combo.get_active_text (); - state->device = device_combo.get_active_text (); - state->buffer_size = buffer_size_combo.get_active_text (); - } - - state->sample_rate = sample_rate_combo.get_active_text (); - - if (!existing) { - states.push_back (*state); - } + /* reset the strings for buffer size to show the correct msec value + (reflecting the new sample rate + */ reshow_buffer_sizes (false); + save_state (); + } void EngineControl::buffer_size_changed () { - bool existing = true; - State* state = get_current_state (); - - if (!state) { - existing = false; - state = new State; - state->backend = backend_combo.get_active_text (); - state->driver = driver_combo.get_active_text (); - state->device = device_combo.get_active_text (); - state->sample_rate = sample_rate_combo.get_active_text (); - } - - state->buffer_size = buffer_size_combo.get_active_text (); - - if (!existing) { - states.push_back (*state); - } + save_state (); } void @@ -452,6 +424,28 @@ EngineControl::get_current_state () device_combo.get_active_text()); } +void +EngineControl::save_state () +{ + bool existing = true; + State* state = get_current_state (); + + if (!state) { + existing = false; + state = new State; + } + + state->backend = backend_combo.get_active_text (); + state->driver = driver_combo.get_active_text (); + state->device = device_combo.get_active_text (); + state->buffer_size = buffer_size_combo.get_active_text (); + state->sample_rate = sample_rate_combo.get_active_text (); + + if (!existing) { + states.push_back (*state); + } +} + void EngineControl::maybe_set_state () { @@ -461,6 +455,10 @@ EngineControl::maybe_set_state () sr_connection.block (); bs_connection.block (); sample_rate_combo.set_active_text (state->sample_rate); + /* need to reset possible strings for buffer size before we do + this + */ + reshow_buffer_sizes (false); buffer_size_combo.set_active_text (state->buffer_size); bs_connection.unblock (); sr_connection.unblock (); diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 4a65ec5b4a..a56a97caee 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -140,6 +140,7 @@ class EngineControl : public Gtk::VBox { const std::string& device); State* get_current_state (); void maybe_set_state (); + void save_state (); }; #endif /* __gtk2_ardour_engine_dialog_h__ */