write_out_of_band_data (bufs, start_frame, end_frame, nframes);
- process_output_buffers (bufs, start_frame, end_frame, nframes,
- (!_session.get_record_enabled() || !Config->get_do_not_record_plugins()), declick);
+ /* final argument: don't waste time with automation if we're recording or we've just stopped (yes it can happen) */
+ process_output_buffers (bufs, start_frame, end_frame, nframes,
+ (!_session.get_record_enabled() || !Config->get_do_not_record_plugins()), declick,
+ (!diskstream->record_enabled() && !_session.transport_stopped()));
}
_main_outs->flush_buffers (nframes, end_frame - start_frame - 1);
}
void
-MidiTrack::handle_transport_stopped (bool abort, bool did_locate, bool flush_processors)
+MidiTrack::realtime_handle_transport_stopped ()
{
- Route::handle_transport_stopped (abort, did_locate, flush_processors);
+ Glib::RWLock::ReaderLock lm (_processor_lock, Glib::TRY_LOCK);
+ if (!lm.locked ()) {
+ return;
+ }
+
+ for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
+ (*i)->realtime_handle_transport_stopped ();
+ }
}
void