summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-25 09:47:50 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-02 12:07:15 +1000
commit25ff056921da19a6c9f995db318ec54de2b19b32 (patch)
treeaccfa29a9d10dad27f6dbb967e791ab5cf277e0d /gtk2_ardour
parent9626e0c41346be98c72ae1502727366ef38d6a73 (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')
-rw-r--r--gtk2_ardour/engine_dialog.cc35
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 ();