diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.h | 3 |
2 files changed, 11 insertions, 0 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index c5538a1a15..53b703b689 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -277,6 +277,7 @@ EngineControl::EngineControl () ARDOUR::AudioEngine::instance()->Running.connect (running_connection, MISSING_INVALIDATOR, boost::bind (&EngineControl::engine_running, this), gui_context()); ARDOUR::AudioEngine::instance()->Stopped.connect (stopped_connection, MISSING_INVALIDATOR, boost::bind (&EngineControl::engine_stopped, this), gui_context()); ARDOUR::AudioEngine::instance()->Halted.connect (stopped_connection, MISSING_INVALIDATOR, boost::bind (&EngineControl::engine_stopped, this), gui_context()); + ARDOUR::AudioEngine::instance()->DeviceListChanged.connect (devicelist_connection, MISSING_INVALIDATOR, boost::bind (&EngineControl::device_list_changed, this), gui_context()); if (audio_setup) { set_state (*audio_setup); @@ -2192,6 +2193,13 @@ EngineControl::engine_stopped () } void +EngineControl::device_list_changed () +{ + PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1); + backend_changed(); +} + +void EngineControl::connect_disconnect_click() { if (ARDOUR::AudioEngine::instance()->running()) { diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 4948c48c4d..5b52ac7074 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -247,8 +247,11 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { void engine_running (); void engine_stopped (); + void device_list_changed (); + PBD::ScopedConnection running_connection; PBD::ScopedConnectionList stopped_connection; + PBD::ScopedConnection devicelist_connection; void connect_disconnect_click (); void calibrate_audio_latency (); |