ardour
|
#include <butler.h>
Classes | |
struct | Request |
Public Member Functions | |
Butler (Session &session) | |
~Butler () | |
int | start_thread () |
void | terminate_thread () |
void | schedule_transport_work () |
void | summon () |
void | stop () |
void | wait_until_finished () |
bool | transport_work_requested () const |
void | drop_references () |
framecnt_t | audio_diskstream_capture_buffer_size () const |
framecnt_t | audio_diskstream_playback_buffer_size () const |
uint32_t | midi_diskstream_buffer_size () const |
void * | thread_work () |
Public Member Functions inherited from ARDOUR::SessionHandleRef | |
SessionHandleRef (ARDOUR::Session &s) | |
virtual | ~SessionHandleRef () |
Public Member Functions inherited from PBD::ScopedConnectionList | |
ScopedConnectionList () | |
virtual | ~ScopedConnectionList () |
void | add_connection (const UnscopedConnection &c) |
void | drop_connections () |
Static Public Member Functions | |
static void * | _thread_work (void *arg) |
Public Attributes | |
pthread_t | thread |
bool | have_thread |
Glib::Threads::Mutex | request_lock |
Glib::Threads::Cond | paused |
bool | should_run |
gint | should_do_transport_work |
framecnt_t | audio_dstream_capture_buffer_size |
framecnt_t | audio_dstream_playback_buffer_size |
uint32_t | midi_dstream_buffer_size |
RingBuffer< CrossThreadPool * > | pool_trash |
Private Member Functions | |
void | empty_pool_trash () |
void | config_changed (std::string) |
void | queue_request (Request::Type r) |
Private Attributes | |
CrossThreadChannel | _xthread |
Additional Inherited Members | |
Protected Member Functions inherited from ARDOUR::SessionHandleRef | |
virtual void | session_going_away () |
virtual void | insanity_check () |
Protected Attributes inherited from ARDOUR::SessionHandleRef | |
ARDOUR::Session & | _session |
One of the Butler's functions is to clean up (ie delete) unused CrossThreadPools. When a thread with a CrossThreadPool terminates, its CTP is added to pool_trash. When the Butler thread wakes up, we check this trash buffer for CTPs, and if they are empty they are deleted.
|
inline |
|
inline |
|
private |
|
inline |
|
private |
|
private |
framecnt_t ARDOUR::Butler::audio_dstream_capture_buffer_size |
framecnt_t ARDOUR::Butler::audio_dstream_playback_buffer_size |
RingBuffer<CrossThreadPool*> ARDOUR::Butler::pool_trash |