potential fix for crashing bug caused by mutex lifetime in ~AudioDiskstream
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 19 Dec 2006 16:21:24 +0000 (16:21 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 19 Dec 2006 16:21:24 +0000 (16:21 +0000)
git-svn-id: svn://localhost/ardour2/trunk@1231 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/audio_diskstream.cc

index e30c683d8ea631f2f032fa40d7481aa32202fffe..e3b4c2b61bb4a49832fc2d394366f0a9449e313b 100644 (file)
@@ -168,12 +168,18 @@ AudioDiskstream::destroy_channel (ChannelInfo &chan)
 
 AudioDiskstream::~AudioDiskstream ()
 {
-       Glib::Mutex::Lock lm (state_lock);
+       {
+               /* don't be holding this lock as we exit the destructor, glib will wince
+                  visibly since the mutex gets destroyed before we release it.
+               */
 
-       for (ChannelList::iterator chan = channels.begin(); chan != channels.end(); ++chan)
-               destroy_channel((*chan));
-       
-       channels.clear();
+               Glib::Mutex::Lock lm (state_lock);
+               
+               for (ChannelList::iterator chan = channels.begin(); chan != channels.end(); ++chan)
+                       destroy_channel((*chan));
+               
+               channels.clear();
+       }
 }
 
 void