21 #ifndef __pbd_abstract_ui_h__
22 #define __pbd_abstract_ui_h__
28 #include <glibmm/threads.h>
46 #ifdef ABSTRACT_UI_EXPORTS
47 #define ABSTRACT_UI_API LIBPBD_DLL_EXPORT
49 #define ABSTRACT_UI_API LIBPBD_DLL_IMPORT
55 template<
typename RequestObject>
63 bool call_slot (EventLoop::InvalidationRecord*,
const boost::function<
void()>&);
72 :
PBD::RingBufferNPT<RequestObject> (size)
77 #if defined(COMPILER_MINGW) && defined(PTW32_VERSION)
80 bool operator() (
const ptw32_handle_t& thread1,
const ptw32_handle_t& thread2)
82 return thread1.p < thread2.p;
85 typedef typename std::map<pthread_t,RequestBuffer*, pthread_cmp>::iterator RequestBufferMapIterator;
86 typedef std::map<pthread_t,RequestBuffer*, pthread_cmp> RequestBufferMap;
virtual void do_request(RequestObject *)=0
std::map< pthread_t, RequestBuffer * > RequestBufferMap
std::list< RequestObject * > request_list
RequestBuffer * get_per_thread_request_buffer()
void send_request(RequestObject *)
RequestBuffer::rw_vector RequestBufferVector
bool call_slot(EventLoop::InvalidationRecord *, const boost::function< void()> &)
RequestBufferMap request_buffers
Glib::Threads::RWLock & slot_invalidation_rwlock()
Glib::Threads::RWLock request_buffer_map_lock
std::map< pthread_t, RequestBuffer * >::iterator RequestBufferMapIterator
AbstractUI(const std::string &name)
void register_thread(pthread_t, std::string, uint32_t num_requests)
PBD::ScopedConnection new_thread_connection
RequestObject * get_request(RequestType)
void handle_ui_requests()
GtkImageIconNameData name
RequestBuffer(uint32_t size)