13
0

fix up restoration of saved state from disk, still incomplete

This commit is contained in:
Paul Davis 2013-09-04 22:22:18 -04:00
parent 418f2ff20a
commit 0cc4ee7b79
2 changed files with 33 additions and 34 deletions

View 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 ();

View 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__ */