summaryrefslogtreecommitdiff
path: root/libs/pbd/pbd/abstract_ui.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-02-07 18:21:50 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-02-07 18:21:50 +0000
commit94827dd755d5d3e93ceb99788ca5f6e0054f85ef (patch)
treeb0404aada850e05805eec2e7f177ae38b59fb436 /libs/pbd/pbd/abstract_ui.h
parent32e6f03cd40a89d73ded41d96f4e563d70e133ff (diff)
forward port thread/abstract_ui changes from 2.X to 3.0
git-svn-id: svn://localhost/ardour2/branches/3.0@8751 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/pbd/pbd/abstract_ui.h')
-rw-r--r--libs/pbd/pbd/abstract_ui.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/libs/pbd/pbd/abstract_ui.h b/libs/pbd/pbd/abstract_ui.h
index 943d994666..0ee61eb7e1 100644
--- a/libs/pbd/pbd/abstract_ui.h
+++ b/libs/pbd/pbd/abstract_ui.h
@@ -44,13 +44,21 @@ class AbstractUI : public BaseUI
void call_slot (EventLoop::InvalidationRecord*, const boost::function<void()>&);
Glib::Mutex& slot_invalidation_mutex() { return request_buffer_map_lock; }
+ Glib::Mutex request_buffer_map_lock;
+
protected:
- typedef RingBufferNPT<RequestObject> RequestBuffer;
+ struct RequestBuffer : public RingBufferNPT<RequestObject> {
+ bool dead;
+ AbstractUI<RequestObject>& ui;
+ RequestBuffer (uint32_t size, AbstractUI<RequestObject>& uir)
+ : RingBufferNPT<RequestObject> (size)
+ , dead (false)
+ , ui (uir) {}
+ };
typedef typename RequestBuffer::rw_vector RequestBufferVector;
typedef typename std::map<pthread_t,RequestBuffer*>::iterator RequestBufferMapIterator;
typedef std::map<pthread_t,RequestBuffer*> RequestBufferMap;
- Glib::Mutex request_buffer_map_lock;
RequestBufferMap request_buffers;
static Glib::StaticPrivate<RequestBuffer> per_thread_request_buffer;