make boost shared_ptr debugging a little easier to turn on/off
[ardour.git] / libs / ardour / audioengine.cc
index 9c8407e8d710ec86299a5fc013b0e1777a36ea75..a3ecd04b47ae2be3d2244cbde8793bf1f812b0de 100644 (file)
@@ -63,6 +63,8 @@ using namespace PBD;
 
 AudioEngine* AudioEngine::_instance = 0;
 
+static gint audioengine_thread_cnt = 1;
+
 #ifdef SILENCE_AFTER
 #define SILENCE_AFTER_SECONDS 600
 #endif
@@ -112,6 +114,7 @@ AudioEngine::~AudioEngine ()
        for (BackendMap::const_iterator i = _backends.begin(); i != _backends.end(); ++i) {
                i->second->deinstantiate();
        }
+       delete _main_thread;
 }
 
 AudioEngine*
@@ -1224,13 +1227,15 @@ AudioEngine::thread_init_callback (void* arg)
 
        pthread_set_name (X_("audioengine"));
 
-       SessionEvent::create_per_thread_pool (X_("AudioEngine"), 512);
-
-       PBD::notify_event_loops_about_thread_creation (pthread_self(), X_("AudioEngine"), 4096);
+       const int thread_num = g_atomic_int_add (&audioengine_thread_cnt, 1);
+       const string thread_name = string_compose (X_("AudioEngine %1"), thread_num);
 
+       SessionEvent::create_per_thread_pool (thread_name, 512);
+       PBD::notify_event_loops_about_thread_creation (pthread_self(), thread_name, 4096);
        AsyncMIDIPort::set_process_thread (pthread_self());
 
        if (arg) {
+               delete AudioEngine::instance()->_main_thread;
                /* the special thread created/managed by the backend */
                AudioEngine::instance()->_main_thread = new ProcessThread;
        }