From: Robin Gareus Date: Sat, 26 Nov 2016 13:31:24 +0000 (+0100) Subject: Restrict Device selection to valid choices. X-Git-Tag: 5.5~40 X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=0cb9d4a3d2c0dcd8535e50b8518b9bf8b6df3dc9;hp=335debfa2fed045dc80c43fb2ef62d89262fc8f8 Restrict Device selection to valid choices. --- diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index b20b56176f..192c750131 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -1592,6 +1592,24 @@ void EngineControl::input_device_changed () { DEBUG_ECONTROL ("input_device_changed"); + + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + if (backend && backend->match_input_output_devices_or_none ()) { + const std::string& dev_none = ARDOUR::AudioBackend::get_standard_device_name (ARDOUR::AudioBackend::DeviceNone); + + if (get_output_device_name () != dev_none + && get_input_device_name () != dev_none + && get_input_device_name () != get_output_device_name ()) { + block_changed_signals (); + if (contains_value (output_device_combo, get_input_device_name ())) { + output_device_combo.set_active_text (get_input_device_name ()); + } else { + assert (contains_value (output_device_combo, dev_none)); + output_device_combo.set_active_text (dev_none); + } + unblock_changed_signals (); + } + } device_changed (); } @@ -1599,6 +1617,23 @@ void EngineControl::output_device_changed () { DEBUG_ECONTROL ("output_device_changed"); + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + if (backend && backend->match_input_output_devices_or_none ()) { + const std::string& dev_none = ARDOUR::AudioBackend::get_standard_device_name (ARDOUR::AudioBackend::DeviceNone); + + if (get_input_device_name () != dev_none + && get_input_device_name () != dev_none + && get_input_device_name () != get_output_device_name ()) { + block_changed_signals (); + if (contains_value (input_device_combo, get_output_device_name ())) { + input_device_combo.set_active_text (get_output_device_name ()); + } else { + assert (contains_value (input_device_combo, dev_none)); + input_device_combo.set_active_text (dev_none); + } + unblock_changed_signals (); + } + } device_changed (); }