diff options
Diffstat (limited to 'libs/ardour/session_butler.cc')
-rw-r--r-- | libs/ardour/session_butler.cc | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/libs/ardour/session_butler.cc b/libs/ardour/session_butler.cc index d29bf3937b..b1451912d0 100644 --- a/libs/ardour/session_butler.cc +++ b/libs/ardour/session_butler.cc @@ -42,7 +42,7 @@ using namespace std; using namespace ARDOUR; -//using namespace sigc; +using namespace PBD; static float _read_data_rate; static float _write_data_rate; @@ -174,9 +174,8 @@ Session::butler_thread_work () butler_gain_buffer = new gain_t[AudioDiskstream::disk_io_frames()]; // this buffer is used for temp conversion purposes in filesources char * conv_buffer = conversion_buffer(ButlerContext); - + while (true) { - pfd[0].fd = butler_request_pipe[0]; pfd[0].events = POLLIN|POLLERR|POLLHUP; @@ -198,14 +197,13 @@ Session::butler_thread_work () } if (pfd[0].revents & POLLIN) { - + char req; /* empty the pipe of all current requests */ while (1) { size_t nread = ::read (butler_request_pipe[0], &req, sizeof (req)); - if (nread == 1) { switch ((ButlerRequest::Type) req) { @@ -240,10 +238,10 @@ Session::butler_thread_work () } } } - - for (i = audio_diskstreams.begin(); i != audio_diskstreams.end(); ++i) { + + //for (i = audio_diskstreams.begin(); i != audio_diskstreams.end(); ++i) { // cerr << "BEFORE " << (*i)->name() << ": pb = " << (*i)->playback_buffer_load() << " cp = " << (*i)->capture_buffer_load() << endl; - } + //} if (transport_work_requested()) { butler_transport_work (); @@ -258,7 +256,6 @@ Session::butler_thread_work () Glib::RWLock::ReaderLock dsm (diskstream_lock); for (i = audio_diskstreams.begin(); !transport_work_requested() && butler_should_run && i != audio_diskstreams.end(); ++i) { - // cerr << "rah fondr " << (*i)->io()->name () << endl; switch ((*i)->do_refill (butler_mixdown_buffer, butler_gain_buffer, conv_buffer)) { @@ -299,9 +296,8 @@ Session::butler_thread_work () bytes = 0; compute_io = true; gettimeofday (&begin, 0); - + for (i = audio_diskstreams.begin(); !transport_work_requested() && butler_should_run && i != audio_diskstreams.end(); ++i) { - // cerr << "write behind for " << (*i)->name () << endl; switch ((*i)->do_flush (conv_buffer)) { @@ -375,18 +371,17 @@ Session::butler_thread_work () void -Session::request_overwrite_buffer (AudioDiskstream* stream) +Session::request_overwrite_buffer (Diskstream* stream) { Event *ev = new Event (Event::Overwrite, Event::Add, Event::Immediate, 0, 0, 0.0); ev->set_ptr (stream); queue_event (ev); } +/** Process thread. */ void -Session::overwrite_some_buffers (AudioDiskstream* ds) +Session::overwrite_some_buffers (Diskstream* ds) { - /* executed by the audio thread */ - if (actively_recording()) { return; } |