summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/delivery.cc4
-rw-r--r--libs/ardour/midi_track.cc7
-rw-r--r--libs/ardour/track.cc7
3 files changed, 16 insertions, 2 deletions
diff --git a/libs/ardour/delivery.cc b/libs/ardour/delivery.cc
index 1566f7877d..72429e472d 100644
--- a/libs/ardour/delivery.cc
+++ b/libs/ardour/delivery.cc
@@ -454,6 +454,10 @@ Delivery::flush_buffers (framecnt_t nframes, framepos_t time)
{
/* io_lock, not taken: function must be called from Session::process() calltree */
+ if (!_output) {
+ return;
+ }
+
PortSet& ports (_output->ports());
for (PortSet::iterator i = ports.begin(); i != ports.end(); ++i) {
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc
index d51e5ef067..fe2dc74b72 100644
--- a/libs/ardour/midi_track.cc
+++ b/libs/ardour/midi_track.cc
@@ -398,7 +398,12 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame
(!diskstream->record_enabled() && !_session.transport_stopped()));
}
- _main_outs->flush_buffers (nframes, end_frame - start_frame - 1);
+ for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
+ boost::shared_ptr<Delivery> d = boost::dynamic_pointer_cast<Delivery> (*i);
+ if (d) {
+ d->flush_buffers (nframes, end_frame - start_frame - 1);
+ }
+ }
return 0;
}
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index 4f682085b2..5c9bcc747d 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -278,7 +278,12 @@ Track::no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
passthru (start_frame, end_frame, nframes, false);
}
- _main_outs->flush_buffers (nframes, end_frame - start_frame - 1);
+ for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
+ boost::shared_ptr<Delivery> d = boost::dynamic_pointer_cast<Delivery> (*i);
+ if (d) {
+ d->flush_buffers (nframes, end_frame - start_frame - 1);
+ }
+ }
return 0;
}