X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fsession_butler.cc;h=c92c0604c7d5af9adbc43229ff378402aa3bd5aa;hb=ecbd2ebb7446f9f3069145ea8b233e30a9218060;hp=41b4851ce5a0112622255cedf9cf70176ffc2f2b;hpb=a532e7247cfccaf35edbb9b76868ead3cc9b1342;p=ardour.git diff --git a/libs/ardour/session_butler.cc b/libs/ardour/session_butler.cc index 41b4851ce5..c92c0604c7 100644 --- a/libs/ardour/session_butler.cc +++ b/libs/ardour/session_butler.cc @@ -40,6 +40,7 @@ #include "ardour/midi_diskstream.h" #include "ardour/session.h" #include "ardour/timestamps.h" +#include "ardour/track.h" #include "i18n.h" @@ -65,42 +66,75 @@ static inline uint32_t next_power_of_two (uint32_t n) BUTLER THREAD ---------------------------------------------------------------------------*/ +void +Session::adjust_playback_buffering () +{ + request_stop (false, false); + SessionEvent *ev = new SessionEvent (SessionEvent::AdjustPlaybackBuffering, SessionEvent::Add, SessionEvent::Immediate, 0, 0, 0.0); + queue_event (ev); +} + +void +Session::adjust_capture_buffering () +{ + request_stop (false, false); + SessionEvent *ev = new SessionEvent (SessionEvent::AdjustCaptureBuffering, SessionEvent::Add, SessionEvent::Immediate, 0, 0, 0.0); + queue_event (ev); +} + +void +Session::schedule_playback_buffering_adjustment () +{ + add_post_transport_work (PostTransportAdjustPlaybackBuffering); + _butler->schedule_transport_work (); +} + +void +Session::schedule_capture_buffering_adjustment () +{ + add_post_transport_work (PostTransportAdjustCaptureBuffering); + _butler->schedule_transport_work (); +} + void Session::schedule_curve_reallocation () { - post_transport_work = PostTransportWork (post_transport_work | PostTransportCurveRealloc); + add_post_transport_work (PostTransportCurveRealloc); _butler->schedule_transport_work (); } void -Session::request_overwrite_buffer (Diskstream* stream) +Session::request_overwrite_buffer (Track* t) { - Event *ev = new Event (Event::Overwrite, Event::Add, Event::Immediate, 0, 0, 0.0); - ev->set_ptr (stream); + SessionEvent *ev = new SessionEvent (SessionEvent::Overwrite, SessionEvent::Add, SessionEvent::Immediate, 0, 0, 0.0); + ev->set_ptr (t); queue_event (ev); } /** Process thread. */ void -Session::overwrite_some_buffers (Diskstream* ds) +Session::overwrite_some_buffers (Track* t) { if (actively_recording()) { return; } - if (ds) { + if (t) { - ds->set_pending_overwrite (true); + t->set_pending_overwrite (true); } else { - boost::shared_ptr dsl = diskstreams.reader(); - for (DiskstreamList::iterator i = dsl->begin(); i != dsl->end(); ++i) { - (*i)->set_pending_overwrite (true); + boost::shared_ptr rl = routes.reader(); + for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) { + boost::shared_ptr tr = boost::dynamic_pointer_cast (*i); + if (tr) { + tr->set_pending_overwrite (true); + } } } - post_transport_work = PostTransportWork (post_transport_work | PostTransportOverWrite); + add_post_transport_work (PostTransportOverWrite); _butler->schedule_transport_work (); } @@ -115,28 +149,3 @@ Session::capture_load () { return (uint32_t) g_atomic_int_get (&_capture_load); } - -uint32_t -Session::playback_load_min () -{ - return (uint32_t) g_atomic_int_get (&_playback_load_min); -} - -uint32_t -Session::capture_load_min () -{ - return (uint32_t) g_atomic_int_get (&_capture_load_min); -} - -void -Session::reset_capture_load_min () -{ - g_atomic_int_set (&_capture_load_min, 100); -} - -void -Session::reset_playback_load_min () -{ - g_atomic_int_set (&_playback_load_min, 100); -} -