remove Evoral::RingBuffer, which was (a) duplicating PBD::RingBufferNPT and (b) broke...
[ardour.git] / libs / ardour / ardour / buffer_manager.h
1 #ifndef __libardour_buffer_manager__ 
2 #define __libardour_buffer_manager__
3
4 #include <stdint.h>
5
6 #include "pbd/ringbufferNPT.h"
7
8 #include "ardour/chan_count.h"
9 #include <list>
10 #include <glibmm/thread.h>
11
12 namespace ARDOUR {
13
14 class ThreadBuffers;
15
16 class BufferManager
17 {
18   public:
19         static void init (uint32_t);
20         
21         static ThreadBuffers* get_thread_buffers ();
22         static void           put_thread_buffers (ThreadBuffers*);
23
24         static void ensure_buffers (ChanCount howmany = ChanCount::ZERO);
25
26   private:
27         static Glib::StaticMutex rb_mutex;
28         
29         typedef PBD::RingBufferNPT<ThreadBuffers*> ThreadBufferFIFO;
30         typedef std::list<ThreadBuffers*> ThreadBufferList;
31
32         static ThreadBufferFIFO* thread_buffers;
33         static ThreadBufferList* thread_buffers_list;
34 };
35
36 }
37
38 #endif /* __libardour_buffer_manager__ */