diff options
author | Robin Gareus <robin@gareus.org> | 2016-01-29 01:12:32 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-01-29 01:12:53 +0100 |
commit | c0a843a905a094659bbf95fd9a9602edcce60f54 (patch) | |
tree | 4d83c17199e7d9eb4f6871b42f9ccfc1562e73a3 /gtk2_ardour/engine_dialog.h | |
parent | cf558ee18ca35e29d4d688cd5601085c92fcafb5 (diff) |
fix device-list update concurrency issue.
It may happen that during push_state_to_backend() a device is
reconfigured in a way that triggers a "Device Changed" callback before
the engine is started. This callback can trigger a change to the
configuration that will be used when the engine is actually started.
This has been seen on OSX in conjunction with Aggregate Devices
(even if the aggregate is not used, but the device which is used
is also part of an aggregate)
example: HW changed callback arrives, device-list is re-populated,
*A*irplay" is at the top of the list, Airplay supports only 44.1K,
Samplerate changes... later save also writes this new rate to the file.
Diffstat (limited to 'gtk2_ardour/engine_dialog.h')
-rw-r--r-- | gtk2_ardour/engine_dialog.h | 3 |
1 files changed, 2 insertions, 1 deletions
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; |