diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-07 20:30:06 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-07 20:30:06 -0400 |
commit | da7d3afc8763fa4a966a3c10a0c4c9560cc4ebe6 (patch) | |
tree | f161be57f85adb46ca7fb66ffdef62a09f3e9107 /libs | |
parent | f1b2674d9b768ed20a5f8aae7e59962c5ed514a4 (diff) |
use AudioEngine destructor to do necessary stuff when shutting it down, and remove unused Config stuff in AudioEngine
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/audioengine.h | 4 | ||||
-rw-r--r-- | libs/ardour/audioengine.cc | 16 |
2 files changed, 9 insertions, 11 deletions
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 1bf4be3243..ddffd1d5c0 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -229,6 +229,7 @@ public: std::string _latency_output_name; framecnt_t _latency_signal_latency; bool _started_for_latency; + bool _in_destructor; void meter_thread (); void start_metering_thread (); @@ -236,9 +237,6 @@ public: static gint m_meter_exit; - void parameter_changed (const std::string&); - PBD::ScopedConnection config_connection; - typedef std::map<std::string,AudioBackendInfo*> BackendMap; BackendMap _backends; AudioBackendInfo* backend_discover (const std::string&); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 631a861741..f6694d88ea 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -81,6 +81,7 @@ AudioEngine::AudioEngine () , _latency_flush_frames (0) , _latency_signal_latency (0) , _started_for_latency (false) + , _in_destructor (false) { g_atomic_int_set (&m_meter_exit, 0); discover_backends (); @@ -88,15 +89,9 @@ AudioEngine::AudioEngine () AudioEngine::~AudioEngine () { + _in_destructor = true; + stop_metering_thread (); drop_backend (); - - config_connection.disconnect (); - - { - Glib::Threads::Mutex::Lock tm (_process_lock); - session_removed.signal (); - stop_metering_thread (); - } } AudioEngine* @@ -1000,6 +995,11 @@ AudioEngine::update_latencies () void AudioEngine::halted_callback (const char* why) { + if (_in_destructor) { + /* everything is under control */ + return; + } + stop_metering_thread (); _running = false; |