X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fbutler.h;h=44ce7848990f534b3a7261a5997d1415a9a737c7;hb=25a4cae8ad30dc090f2313600456d759ab7e81a5;hp=21af5fb69158a217354b9fd4307a8db93b277010;hpb=24d2b5ec9200bf46ccb42528560de4a02b7be516;p=ardour.git diff --git a/libs/ardour/ardour/butler.h b/libs/ardour/ardour/butler.h index 21af5fb691..44ce784899 100644 --- a/libs/ardour/ardour/butler.h +++ b/libs/ardour/ardour/butler.h @@ -20,14 +20,19 @@ #ifndef __ardour_butler_h__ #define __ardour_butler_h__ +#include + #include +#include "pbd/crossthread.h" #include "pbd/ringbuffer.h" #include "pbd/pool.h" #include "ardour/libardour_visibility.h" #include "ardour/types.h" #include "ardour/session_handle.h" + + namespace ARDOUR { /** @@ -52,10 +57,14 @@ class LIBARDOUR_API Butler : public SessionHandleRef bool transport_work_requested() const; void drop_references (); + void map_parameters (); + framecnt_t audio_diskstream_capture_buffer_size() const { return audio_dstream_capture_buffer_size; } framecnt_t audio_diskstream_playback_buffer_size() const { return audio_dstream_playback_buffer_size; } uint32_t midi_diskstream_buffer_size() const { return midi_dstream_buffer_size; } + bool flush_tracks_to_disk_after_locate (boost::shared_ptr, uint32_t& errors); + static void* _thread_work(void *arg); void* thread_work(); @@ -68,11 +77,11 @@ class LIBARDOUR_API Butler : public SessionHandleRef }; pthread_t thread; + bool have_thread; Glib::Threads::Mutex request_lock; Glib::Threads::Cond paused; bool should_run; mutable gint should_do_transport_work; - int request_pipe[2]; framecnt_t audio_dstream_capture_buffer_size; framecnt_t audio_dstream_playback_buffer_size; uint32_t midi_dstream_buffer_size; @@ -81,6 +90,16 @@ class LIBARDOUR_API Butler : public SessionHandleRef private: void empty_pool_trash (); void config_changed (std::string); + + bool flush_tracks_to_disk_normal (boost::shared_ptr, uint32_t& errors); + + /** + * Add request to butler thread request queue + */ + void queue_request (Request::Type r); + + CrossThreadChannel _xthread; + }; } // namespace ARDOUR