summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/engine_dialog.cc5
-rw-r--r--gtk2_ardour/engine_dialog.h3
2 files changed, 7 insertions, 1 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index 4df00e4ce5..6abae66dda 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -96,6 +96,7 @@ EngineControl::EngineControl ()
, lm_running (false)
, midi_back_button (_("Back to settings"))
, ignore_changes (0)
+ , ignore_device_changes (0)
, _desired_sample_rate (0)
, started_at_least_once (false)
, queue_device_changed (false)
@@ -2220,6 +2221,7 @@ EngineControl::push_state_to_backend (bool start)
{
DEBUG_ECONTROL ("push_state_to_backend");
boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
+ PBD::Unwinder<uint32_t> protect_ignore_device_changes (ignore_device_changes, ignore_device_changes + 1);
if (!backend) {
return 0;
@@ -3041,6 +3043,9 @@ EngineControl::engine_stopped ()
void
EngineControl::device_list_changed ()
{
+ if (ignore_device_changes) {
+ return;
+ }
PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1); // ??
list_devices ();
midi_option_changed();
diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h
index d5c54d088e..71c95cc209 100644
--- a/gtk2_ardour/engine_dialog.h
+++ b/gtk2_ardour/engine_dialog.h
@@ -120,7 +120,8 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
Gtk::CheckButton aj_button;
- uint32_t ignore_changes;
+ uint32_t ignore_changes; // state save/load
+ uint32_t ignore_device_changes; // AudioEngine::DeviceListChanged
uint32_t _desired_sample_rate;
bool started_at_least_once;
bool queue_device_changed;