From adcc5be728b8ce66f0f62440b2c73100846a263b Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 29 May 2021 17:54:20 +0200 Subject: [PATCH] Retain devices when device list changes EngineControl::device_list_changed calls list_devices, which clears and refills the I/O dropdown. This resulted in changed callbacks EngineControl::input_device_changed which in turn unsets the device in the backend: set_input_device_name(""). The I/O devices were reset (use first available). --- gtk2_ardour/engine_dialog.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 4bac8e4a7e..a5dbf1146e 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -1365,6 +1365,7 @@ EngineControl::list_devices () bool devices_available = false; + block_changed_signals (); if (backend->use_separate_input_and_output_devices ()) { bool input_devices_available = set_input_device_popdown_strings (); bool output_devices_available = set_output_device_popdown_strings (); @@ -1372,6 +1373,7 @@ EngineControl::list_devices () } else { devices_available = set_device_popdown_strings (); } + unblock_changed_signals (); if (devices_available) { device_changed ();