ardour
Classes | Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
AbstractUI< RequestObject > Class Template Referenceabstract

#include <abstract_ui.h>

Inheritance diagram for AbstractUI< RequestObject >:
BaseUI PBD::EventLoop

Classes

struct  RequestBuffer
 

Public Member Functions

 AbstractUI (const std::string &name)
 
virtual ~AbstractUI ()
 
void register_thread (std::string, pthread_t, std::string, uint32_t num_requests)
 
void call_slot (EventLoop::InvalidationRecord *, const boost::function< void()> &)
 
Glib::Threads::Mutex & slot_invalidation_mutex ()
 
- Public Member Functions inherited from BaseUI
 BaseUI (const std::string &name)
 
virtual ~BaseUI ()
 
BaseUIbase_instance ()
 
Glib::RefPtr< Glib::MainLoop > main_loop () const
 
Glib::Threads::Thread * event_loop_thread () const
 
bool caller_is_self () const
 
std::string name () const
 
bool ok () const
 
void run ()
 
void quit ()
 
- Public Member Functions inherited from PBD::EventLoop
 EventLoop ()
 
virtual ~EventLoop ()
 
virtual void call_slot (InvalidationRecord *, const boost::function< void()> &)=0
 

Public Attributes

Glib::Threads::Mutex request_buffer_map_lock
 

Protected Types

typedef RequestBuffer::rw_vector RequestBufferVector
 
typedef std::map< pthread_t,
RequestBuffer * >::iterator 
RequestBufferMapIterator
 
typedef std::map< pthread_t,
RequestBuffer * > 
RequestBufferMap
 

Protected Member Functions

RequestObject * get_request (RequestType)
 
void handle_ui_requests ()
 
void send_request (RequestObject *)
 
virtual void do_request (RequestObject *)=0
 
- Protected Member Functions inherited from BaseUI
bool signal_running ()
 
virtual void thread_init ()
 
bool request_handler (Glib::IOCondition)
 
void signal_new_request ()
 
void attach_request_source ()
 

Protected Attributes

RequestBufferMap request_buffers
 
Glib::Threads::Mutex request_list_lock
 
std::list< RequestObject * > request_list
 
PBD::ScopedConnection new_thread_connection
 
- Protected Attributes inherited from BaseUI
bool _ok
 
Glib::RefPtr< Glib::MainLoop > _main_loop
 
Glib::RefPtr< Glib::MainContext > m_context
 
Glib::Threads::Thread * run_loop_thread
 
Glib::Threads::Mutex _run_lock
 
Glib::Threads::Cond _running
 

Static Protected Attributes

static Glib::Threads::Private
< RequestBuffer
per_thread_request_buffer
 

Additional Inherited Members

- Public Types inherited from PBD::EventLoop
enum  RequestType { range_guarantee = ~0 }
 
- Static Public Member Functions inherited from BaseUI
static RequestType new_request_type ()
 
- Static Public Member Functions inherited from PBD::EventLoop
static void * invalidate_request (void *data)
 
static EventLoopget_event_loop_for_thread ()
 
static void set_event_loop_for_thread (EventLoop *ui)
 
- Static Public Attributes inherited from BaseUI
static RequestType CallSlot = BaseUI::new_request_type()
 
static RequestType Quit = BaseUI::new_request_type()
 

Detailed Description

template<typename RequestObject>
class AbstractUI< RequestObject >

Definition at line 55 of file abstract_ui.h.

Member Typedef Documentation

template<typename RequestObject>
typedef std::map<pthread_t,RequestBuffer*> AbstractUI< RequestObject >::RequestBufferMap
protected

Definition at line 90 of file abstract_ui.h.

template<typename RequestObject>
typedef std::map<pthread_t,RequestBuffer*>::iterator AbstractUI< RequestObject >::RequestBufferMapIterator
protected

Definition at line 89 of file abstract_ui.h.

template<typename RequestObject>
typedef RequestBuffer::rw_vector AbstractUI< RequestObject >::RequestBufferVector
protected

Definition at line 76 of file abstract_ui.h.

Constructor & Destructor Documentation

template<typename RequestObject>
AbstractUI< RequestObject >::AbstractUI ( const std::string &  name)

Definition at line 65 of file abstract_ui.cc.

template<typename RequestObject>
virtual AbstractUI< RequestObject >::~AbstractUI ( )
inlinevirtual

Definition at line 59 of file abstract_ui.h.

Member Function Documentation

template<typename RequestObject>
void AbstractUI< RequestObject >::call_slot ( EventLoop::InvalidationRecord *  ,
const boost::function< void()> &   
)

Definition at line 368 of file abstract_ui.cc.

template<typename RequestObject>
virtual void AbstractUI< RequestObject >::do_request ( RequestObject *  )
protectedpure virtual

Implemented in TestUI.

template<typename RequestObject >
RequestObject * AbstractUI< RequestObject >::get_request ( RequestType  rt)
protected

Definition at line 135 of file abstract_ui.cc.

template<typename RequestObject >
void AbstractUI< RequestObject >::handle_ui_requests ( )
protectedvirtual

Derived UI objects must implement this method, which will be called whenever there are requests to be dealt with.

Implements BaseUI.

Definition at line 179 of file abstract_ui.cc.

template<typename RequestObject>
void AbstractUI< RequestObject >::register_thread ( std::string  ,
pthread_t  ,
std::string  ,
uint32_t  num_requests 
)

Definition at line 78 of file abstract_ui.cc.

template<typename RequestObject>
void AbstractUI< RequestObject >::send_request ( RequestObject *  req)
protected

Definition at line 313 of file abstract_ui.cc.

template<typename RequestObject>
Glib::Threads::Mutex& AbstractUI< RequestObject >::slot_invalidation_mutex ( )
inlinevirtual

Implements PBD::EventLoop.

Definition at line 63 of file abstract_ui.h.

Member Data Documentation

template<typename RequestObject>
PBD::ScopedConnection AbstractUI< RequestObject >::new_thread_connection
protected

Definition at line 104 of file abstract_ui.h.

template<typename RequestObject>
Glib::Threads::Private< typename AbstractUI< R >::RequestBuffer > AbstractUI< R >::per_thread_request_buffer
staticprotected

Definition at line 94 of file abstract_ui.h.

template<typename RequestObject>
Glib::Threads::Mutex AbstractUI< RequestObject >::request_buffer_map_lock

Definition at line 65 of file abstract_ui.h.

template<typename RequestObject>
RequestBufferMap AbstractUI< RequestObject >::request_buffers
protected

Definition at line 93 of file abstract_ui.h.

template<typename RequestObject>
std::list<RequestObject*> AbstractUI< RequestObject >::request_list
protected

Definition at line 97 of file abstract_ui.h.

template<typename RequestObject>
Glib::Threads::Mutex AbstractUI< RequestObject >::request_list_lock
protected

Definition at line 96 of file abstract_ui.h.


The documentation for this class was generated from the following files: