diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-08-25 09:47:50 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-09-02 12:07:15 +1000 |
commit | 25ff056921da19a6c9f995db318ec54de2b19b32 (patch) | |
tree | accfa29a9d10dad27f6dbb967e791ab5cf277e0d /gtk2_ardour/engine_dialog.cc | |
parent | 9626e0c41346be98c72ae1502727366ef38d6a73 (diff) |
Use previously set buffer size in EngineDialog if possible
This is also to support refreshing of devices so that the buffer size isn't
reset.
Diffstat (limited to 'gtk2_ardour/engine_dialog.cc')
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index c9b59086b3..705d6c12af 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -1352,23 +1352,34 @@ EngineControl::set_buffersize_popdown_strings () s.push_back (bufsize_as_string (*x)); } + uint32_t previous_size = 0; + if (!buffer_size_combo.get_active_text().empty()) { + previous_size = get_buffer_size (); + } + set_popdown_strings (buffer_size_combo, s); if (!s.empty()) { - buffer_size_combo.set_active_text (s.front()); - uint32_t period = backend->buffer_size(); - if (0 == period && backend->use_separate_input_and_output_devices ()) { - period = backend->default_buffer_size (get_input_device_name ()); - } - if (0 == period && backend->use_separate_input_and_output_devices ()) { - period = backend->default_buffer_size (get_output_device_name ()); - } - if (0 == period && !backend->use_separate_input_and_output_devices ()) { - period = backend->default_buffer_size (get_device_name ()); - } + if (std::find(bs.begin(), bs.end(), previous_size) != bs.end()) { + buffer_size_combo.set_active_text(bufsize_as_string(previous_size)); + } else { - set_active_text_if_present (buffer_size_combo, bufsize_as_string (period)); + buffer_size_combo.set_active_text(s.front()); + + uint32_t period = backend->buffer_size(); + if (0 == period && backend->use_separate_input_and_output_devices()) { + period = backend->default_buffer_size(get_input_device_name()); + } + if (0 == period && backend->use_separate_input_and_output_devices()) { + period = backend->default_buffer_size(get_output_device_name()); + } + if (0 == period && !backend->use_separate_input_and_output_devices()) { + period = backend->default_buffer_size(get_device_name()); + } + + set_active_text_if_present(buffer_size_combo, bufsize_as_string(period)); + } show_buffer_duration (); } update_sensitivity (); |