summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/butler.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-24 00:39:28 +0000
committerDavid Robillard <d@drobilla.net>2009-10-24 00:39:28 +0000
commita532e7247cfccaf35edbb9b76868ead3cc9b1342 (patch)
tree3bd051d42f95dccf78d70ed0d389ab6c98c42ff9 /libs/ardour/ardour/butler.h
parentd56817e7856040adf3db6bda812dfaef7d493c80 (diff)
Move butler methods from Session to Butler.
Slay the dragon. A lil' bit. git-svn-id: svn://localhost/ardour2/branches/3.0@5901 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/butler.h')
-rw-r--r--libs/ardour/ardour/butler.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/libs/ardour/ardour/butler.h b/libs/ardour/ardour/butler.h
index 524651ba28..b88b820736 100644
--- a/libs/ardour/ardour/butler.h
+++ b/libs/ardour/ardour/butler.h
@@ -25,17 +25,48 @@
namespace ARDOUR {
+class Session;
+
class Butler {
public:
- Butler();
+ 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;
+
+ float read_data_rate() const; ///< in usec
+ float write_data_rate() const;
+
+ uint32_t audio_diskstream_buffer_size() const { return audio_dstream_buffer_size; }
+ uint32_t midi_diskstream_buffer_size() const { return midi_dstream_buffer_size; }
+
+ static void* _thread_work(void *arg);
+ void* thread_work();
+
+ struct Request {
+ enum Type {
+ Wake,
+ Run,
+ Pause,
+ Quit
+ };
+ };
+
+ Session* session;
pthread_t thread;
Glib::Mutex request_lock;
Glib::Cond paused;
bool should_run;
mutable gint should_do_transport_work;
int request_pipe[2];
+ uint32_t audio_dstream_buffer_size;
+ uint32_t midi_dstream_buffer_size;
};
} // namespace ARDOUR