ardour
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
BaseUI Class Referenceabstract

#include <base_ui.h>

Inheritance diagram for BaseUI:
PBD::EventLoop AbstractUI< RequestObject > AbstractUI< MidiUIRequest > AbstractUI< TestUIRequest > AbstractUI< UIRequest > ARDOUR::MidiControlUI TestUI Gtkmm2ext::UI ARDOUR_UI

Public Member Functions

 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
 
virtual Glib::Threads::Mutex & slot_invalidation_mutex ()=0
 

Static Public Member Functions

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

static RequestType CallSlot = BaseUI::new_request_type()
 
static RequestType Quit = BaseUI::new_request_type()
 

Protected Member Functions

bool signal_running ()
 
virtual void thread_init ()
 
bool request_handler (Glib::IOCondition)
 
void signal_new_request ()
 
void attach_request_source ()
 
virtual void handle_ui_requests ()=0
 

Protected Attributes

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
 

Private Member Functions

int setup_request_pipe ()
 
void main_thread ()
 

Private Attributes

std::string _name
 
BaseUIbase_ui_instance
 
CrossThreadChannel request_channel
 

Static Private Attributes

static uint64_t rt_bit = 1
 

Additional Inherited Members

- Public Types inherited from PBD::EventLoop
enum  RequestType { range_guarantee = ~0 }
 

Detailed Description

A BaseUI is an abstraction designed to be used with any "user interface" (not necessarily graphical) that needs to wait on events/requests and dispatch/process them as they arrive.

This implementation starts up a thread that runs a Glib main loop to wait on events/requests etc.

Definition at line 45 of file base_ui.h.

Constructor & Destructor Documentation

BaseUI::BaseUI ( const std::string &  name)

Definition at line 50 of file base_ui.cc.

BaseUI::~BaseUI ( )
virtual

Definition at line 62 of file base_ui.cc.

Member Function Documentation

void BaseUI::attach_request_source ( )
protected

This method relies on the caller having already set m_context

Definition at line 158 of file base_ui.cc.

BaseUI* BaseUI::base_instance ( )
inline

Definition at line 51 of file base_ui.h.

bool BaseUI::caller_is_self ( ) const
inline

Definition at line 55 of file base_ui.h.

Glib::Threads::Thread* BaseUI::event_loop_thread ( ) const
inline

Definition at line 54 of file base_ui.h.

virtual void BaseUI::handle_ui_requests ( )
protectedpure virtual

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

Implemented in AbstractUI< RequestObject >, AbstractUI< TestUIRequest >, AbstractUI< UIRequest >, and AbstractUI< MidiUIRequest >.

Glib::RefPtr<Glib::MainLoop> BaseUI::main_loop ( ) const
inline

Definition at line 53 of file base_ui.h.

void BaseUI::main_thread ( )
private

Definition at line 80 of file base_ui.cc.

std::string BaseUI::name ( ) const
inline

Definition at line 57 of file base_ui.h.

BaseUI::RequestType BaseUI::new_request_type ( )
static

Definition at line 67 of file base_ui.cc.

bool BaseUI::ok ( void  ) const
inline

Definition at line 59 of file base_ui.h.

void BaseUI::quit ( )

stop the thread running the main loop (and block until it exits)

Definition at line 114 of file base_ui.cc.

bool BaseUI::request_handler ( Glib::IOCondition  ioc)
protected

Called when there input ready on the request_channel

Definition at line 123 of file base_ui.cc.

void BaseUI::run ( )

start up a thread to run the main loop

Definition at line 99 of file base_ui.cc.

int BaseUI::setup_request_pipe ( )
private
void BaseUI::signal_new_request ( )
protected

Definition at line 148 of file base_ui.cc.

bool BaseUI::signal_running ( )
protected

Definition at line 90 of file base_ui.cc.

virtual void BaseUI::thread_init ( )
inlineprotectedvirtual

Derived UI objects can implement thread_init() which will be called by the event loop thread immediately before it enters the event loop.

Reimplemented in ARDOUR::MidiControlUI.

Definition at line 94 of file base_ui.h.

Member Data Documentation

Glib::RefPtr<Glib::MainLoop> BaseUI::_main_loop
protected

Definition at line 77 of file base_ui.h.

std::string BaseUI::_name
private

Definition at line 110 of file base_ui.h.

bool BaseUI::_ok
protected

Definition at line 75 of file base_ui.h.

Glib::Threads::Mutex BaseUI::_run_lock
protected

Definition at line 80 of file base_ui.h.

Glib::Threads::Cond BaseUI::_running
protected

Definition at line 81 of file base_ui.h.

BaseUI* BaseUI::base_ui_instance
private

Definition at line 111 of file base_ui.h.

BaseUI::RequestType BaseUI::CallSlot = BaseUI::new_request_type()
static

Definition at line 62 of file base_ui.h.

Glib::RefPtr<Glib::MainContext> BaseUI::m_context
protected

Definition at line 78 of file base_ui.h.

Definition at line 63 of file base_ui.h.

CrossThreadChannel BaseUI::request_channel
private

Definition at line 113 of file base_ui.h.

uint64_t BaseUI::rt_bit = 1
staticprivate

Definition at line 115 of file base_ui.h.

Glib::Threads::Thread* BaseUI::run_loop_thread
protected

Definition at line 79 of file base_ui.h.


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