summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-10-07 20:30:06 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-10-07 20:30:06 -0400
commitda7d3afc8763fa4a966a3c10a0c4c9560cc4ebe6 (patch)
treef161be57f85adb46ca7fb66ffdef62a09f3e9107 /libs
parentf1b2674d9b768ed20a5f8aae7e59962c5ed514a4 (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.h4
-rw-r--r--libs/ardour/audioengine.cc16
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;