summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-09-16 10:18:25 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-09-16 10:18:25 -0400
commit4d503c20539e465fb88bdba5edfb23d999c31539 (patch)
tree7a1e9253f4ad3dc3d600784482d7c828d792f7df /gtk2_ardour
parent7cc451d81d456b9073877db7c53262bc38be8c0f (diff)
commit some logic problems with the EngineDialog when change the driver/device name combos
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/engine_dialog.cc32
1 files changed, 24 insertions, 8 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index d724f4f4d3..e8f9bfdf6b 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -387,8 +387,10 @@ EngineControl::list_devices ()
available_devices.push_back (i->name);
}
+ ignore_changes++;
set_popdown_strings (device_combo, available_devices);
-
+ ignore_changes--;
+
if (!available_devices.empty()) {
sample_rate_combo.set_sensitive (true);
buffer_size_combo.set_sensitive (true);
@@ -464,12 +466,20 @@ EngineControl::device_changed ()
}
}
- set_popdown_strings (sample_rate_combo, s);
- if (desired.empty()) {
- sample_rate_combo.set_active_text (s.front());
+ if (!s.empty()) {
+ set_popdown_strings (sample_rate_combo, s);
+
+ if (desired.empty()) {
+ sample_rate_combo.set_active_text (s.front());
+ } else {
+ sample_rate_combo.set_active_text (desired);
+ }
} else {
- sample_rate_combo.set_active_text (desired);
+ /* hmm ... how to tell the user about the fact that we have no
+ * available sample rates.
+ */
}
+
vector<uint32_t> bs = backend->available_buffer_sizes(device_name);
s.clear ();
@@ -482,9 +492,15 @@ EngineControl::device_changed ()
s.push_back (buf);
}
- set_popdown_strings (buffer_size_combo, s);
- buffer_size_combo.set_active_text (s.front());
- show_buffer_duration ();
+ if (!s.empty()) {
+ set_popdown_strings (buffer_size_combo, s);
+ buffer_size_combo.set_active_text (s.front());
+ show_buffer_duration ();
+ } else {
+ /* hmm ... how to tell the user about the fact that we have no
+ * available buffer sizes.
+ */
+ }
manage_control_app_sensitivity ();