From da7d3afc8763fa4a966a3c10a0c4c9560cc4ebe6 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 7 Oct 2013 20:30:06 -0400 Subject: [PATCH] use AudioEngine destructor to do necessary stuff when shutting it down, and remove unused Config stuff in AudioEngine --- libs/ardour/ardour/audioengine.h | 4 +--- 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 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;