27 #include <glibmm/threads.h>
45 #ifdef ABSTRACT_UI_EXPORTS
46 #define ABSTRACT_UI_API LIBPBD_DLL_EXPORT
48 #define ABSTRACT_UI_API LIBPBD_DLL_IMPORT
54 template<
typename RequestObject>
62 bool call_slot (EventLoop::InvalidationRecord*,
const std::function<
void()>&);
71 :
PBD::RingBufferNPT<RequestObject> (size)
76 #if defined(COMPILER_MINGW) && defined(PTW32_VERSION)
79 bool operator() (
const ptw32_handle_t& thread1,
const ptw32_handle_t& thread2)
81 return thread1.p < thread2.p;
84 typedef typename std::map<pthread_t,RequestBuffer*, pthread_cmp>::iterator RequestBufferMapIterator;
85 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
RequestBufferMap request_buffers
Glib::Threads::RWLock & slot_invalidation_rwlock()
Glib::Threads::RWLock request_buffer_map_lock
bool call_slot(EventLoop::InvalidationRecord *, const std::function< void()> &)
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)