diff options
author | Carl Hetherington <carl@carlh.net> | 2010-04-14 23:58:20 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-04-14 23:58:20 +0000 |
commit | 84e92060fd0593adcd47c39b358048715ece9c7a (patch) | |
tree | ce22806736ff7f7fc5f47dfd029f9d8a2b758a13 /libs/pbd/pool.cc | |
parent | 7939dd9399e8e86b579bbddeba73d997ec6cf1b7 (diff) |
Prevent crash in pool destruction during session teardown.
git-svn-id: svn://localhost/ardour2/branches/3.0@6905 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/pbd/pool.cc')
-rw-r--r-- | libs/pbd/pool.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/pbd/pool.cc b/libs/pbd/pool.cc index 7859408c45..abb8695c23 100644 --- a/libs/pbd/pool.cc +++ b/libs/pbd/pool.cc @@ -198,10 +198,19 @@ PerThreadPool::per_thread_pool () return p; } +void +PerThreadPool::set_trash (RingBuffer<CrossThreadPool*>* t) +{ + Glib::Mutex::Lock lm (_trash_mutex); + _trash = t; +} + /** Add a CrossThreadPool to our trash, if we have one. If not, a warning is emitted. */ void PerThreadPool::add_to_trash (CrossThreadPool* p) { + Glib::Mutex::Lock lm (_trash_mutex); + if (!_trash) { warning << "Pool " << p->name() << " has no trash collector; a memory leak has therefore occurred" << endmsg; return; @@ -211,7 +220,6 @@ PerThreadPool::add_to_trash (CrossThreadPool* p) can only be one writer to the _trash RingBuffer) */ - Glib::Mutex::Lock lm (_trash_write_mutex); _trash->write (&p, 1); } |