Extract part of EngineControl::backend_changed into EngineControl::update_midi_options
[ardour.git] / gtk2_ardour / engine_dialog.cc
index 1e8058e73fbae317cb3788a9f19542cf72228966..28e0adcdca97155c5bd2eca768a56c74d3d08842 100644 (file)
@@ -880,6 +880,23 @@ EngineControl::backend_changed ()
                list_devices ();
        }
 
+       update_midi_options ();
+
+       connect_disconnect_button.hide();
+
+       midi_option_changed();
+
+       started_at_least_once = false;
+
+       if (!ignore_changes) {
+               maybe_display_saved_state ();
+       }
+}
+
+void
+EngineControl::update_midi_options ()
+{
+       boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
        vector<string> midi_options = backend->enumerate_midi_options();
 
        if (midi_options.size() == 1) {
@@ -894,16 +911,6 @@ EngineControl::backend_changed ()
                        midi_option_combo.set_sensitive (false);
                }
        }
-
-       connect_disconnect_button.hide();
-
-       midi_option_changed();
-
-       started_at_least_once = false;
-
-       if (!ignore_changes) {
-               maybe_display_saved_state ();
-       }
 }
 
 bool
@@ -992,8 +999,6 @@ EngineControl::set_device_popdown_strings ()
 
                        device_combo.set_active_text (current_device);
                }
-
-               device_changed ();
                return true;
        }
        return false;
@@ -1039,8 +1044,6 @@ EngineControl::set_input_device_popdown_strings ()
                        DEBUG_ECONTROL (string_compose ("set input_device_combo active text: %1", current_device));
                        input_device_combo.set_active_text (current_device);
                }
-
-               device_changed ();
                return true;
        }
 
@@ -1087,8 +1090,6 @@ EngineControl::set_output_device_popdown_strings ()
                        DEBUG_ECONTROL (string_compose ("set input_device_combo active text: %1", current_device));
                        output_device_combo.set_active_text (current_device);
                }
-
-               device_changed ();
                return true;
        }
 
@@ -1115,6 +1116,8 @@ EngineControl::list_devices ()
        }
 
        if (devices_available) {
+               device_changed ();
+
                input_latency.set_sensitive (true);
                output_latency.set_sensitive (true);
                input_channels.set_sensitive (true);