void clear_controls ();
virtual void non_realtime_locate (framepos_t now);
- virtual void transport_stopped (framepos_t now);
+ virtual void non_realtime_transport_stop (framepos_t now, bool flush);
virtual void automation_run (framepos_t, pframes_t);
void flush_buffers (framecnt_t nframes);
void no_outs_cuz_we_no_monitor(bool);
- void transport_stopped (framepos_t frame);
+ void non_realtime_transport_stop (framepos_t now, bool flush);
void realtime_locate ();
BufferSet& output_buffers() { return *_output_buffers; }
virtual bool can_record() { return false; }
- virtual void nonrealtime_handle_transport_stopped (bool abort, bool did_locate, bool flush_processors);
+ virtual void non_realtime_transport_stop (framepos_t now, bool flush);
virtual void realtime_handle_transport_stopped () {}
virtual void realtime_locate () {}
virtual void non_realtime_locate (framepos_t);
}
void
-Automatable::transport_stopped (framepos_t now)
+Automatable::non_realtime_transport_stop (framepos_t now, bool /*flush_processors*/)
{
for (Controls::iterator li = controls().begin(); li != controls().end(); ++li) {
boost::shared_ptr<AutomationControl> c =
}
void
-Delivery::transport_stopped (framepos_t now)
+Delivery::non_realtime_transport_stop (framepos_t now, bool flush)
{
- Processor::transport_stopped (now);
+ Processor::non_realtime_transport_stop (now, flush);
if (_panshell) {
- _panshell->pannable()->transport_stopped (now);
+ _panshell->pannable()->non_realtime_transport_stop (now, flush);
}
if (_output) {
/** Called from the (non-realtime) butler thread when the transport is stopped */
void
-Route::nonrealtime_handle_transport_stopped (bool /*abort_ignored*/, bool /*did_locate*/, bool can_flush_processors)
+Route::non_realtime_transport_stop (framepos_t now, bool flush)
{
- framepos_t now = _session.transport_frame();
-
{
Glib::Threads::RWLock::ReaderLock lm (_processor_lock);
- Automatable::transport_stopped (now);
+ Automatable::non_realtime_transport_stop (now, flush);
for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
- if (!_have_internal_generator && (Config->get_plugins_stop_with_transport() && can_flush_processors)) {
+ if (!_have_internal_generator && (Config->get_plugins_stop_with_transport() && flush)) {
(*i)->flush ();
}
- (*i)->transport_stopped (now);
+ (*i)->non_realtime_transport_stop (now, flush);
}
}
PostTransportWork ptw = post_transport_work ();
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
- (*i)->nonrealtime_handle_transport_stopped (abort, (ptw & PostTransportLocate), (!(ptw & PostTransportLocate) || pending_locate_flush));
+ (*i)->non_realtime_transport_stop (_transport_frame, !(ptw & PostTransportLocate) || pending_locate_flush);
}
VCAList v = _vca_manager->vcas ();
for (VCAList::const_iterator i = v.begin(); i != v.end(); ++i) {
- (*i)->transport_stopped (_transport_frame);
+ (*i)->non_realtime_transport_stop (_transport_frame, !(ptw & PostTransportLocate) || pending_locate_flush);
}
update_latency_compensation ();