diff --git a/libs/ardour/audio_diskstream.cc b/libs/ardour/audio_diskstream.cc index e30c683d8e..e3b4c2b61b 100644 --- a/libs/ardour/audio_diskstream.cc +++ b/libs/ardour/audio_diskstream.cc @@ -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