diff options
author | Robin Gareus <robin@gareus.org> | 2015-03-11 00:25:10 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-03-11 00:25:10 +0100 |
commit | fe85575a12d8c81e8d2d08b7d91238a88c8febe7 (patch) | |
tree | cfc272d4b291673cee546f0a3468f217be46eaef /libs/pbd/pbd/pool.h | |
parent | 1a5a48436a2b9627d640736603341e1b21fe45d9 (diff) |
fix “no per-thread pool” abort
For some backends the process thread can change (e.g.
switch coreaudio headphone + internal speakers)
If there are existing x-thread event calls this can lead to
the following situation:
1) SessionEvent::operator new
2) audioengine process thread change
3) SessionEvent::operator delete -> crash, wrong thread
SessionEvent::operator delete can safely push the event back to
the pool for later cleanup..
Diffstat (limited to 'libs/pbd/pbd/pool.h')
-rw-r--r-- | libs/pbd/pbd/pool.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libs/pbd/pbd/pool.h b/libs/pbd/pbd/pool.h index 1c9ac81a3e..cfd782a794 100644 --- a/libs/pbd/pbd/pool.h +++ b/libs/pbd/pbd/pool.h @@ -128,7 +128,7 @@ class LIBPBD_API PerThreadPool const Glib::Threads::Private<CrossThreadPool>& key() const { return _key; } void create_per_thread_pool (std::string name, unsigned long item_size, unsigned long nitems); - CrossThreadPool* per_thread_pool (); + CrossThreadPool* per_thread_pool (bool must_exist = true); void set_trash (RingBuffer<CrossThreadPool*>* t); void add_to_trash (CrossThreadPool *); |