fix up restoration of saved state from disk, still incomplete
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 5 Sep 2013 02:22:18 +0000 (22:22 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 5 Sep 2013 02:22:18 +0000 (22:22 -0400)
gtk2_ardour/engine_dialog.cc
gtk2_ardour/engine_dialog.h

index 4ad89a8dcf642359a76890ba5a752159d1d1d0de..ebdf60f4d64f1203ed104d777c57b0daee2d67ae 100644 (file)
@@ -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 ();
index 4a65ec5b4acf566c7615f46ea4ef4ee7867a3a0a..a56a97caee72c8766a00cae3b30a3c5218a521a8 100644 (file)
@@ -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__ */