From cb58ca535f7366834062c4f88d74b4de9488e63b Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 19 Oct 2011 10:40:27 +0000 Subject: [PATCH] flush_buffers on all of a route's deliveries so that MIDI sends work. git-svn-id: svn://localhost/ardour2/branches/3.0@10231 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/delivery.cc | 4 ++++ libs/ardour/midi_track.cc | 7 ++++++- libs/ardour/track.cc | 7 ++++++- 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 d = boost::dynamic_pointer_cast (*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 d = boost::dynamic_pointer_cast (*i); + if (d) { + d->flush_buffers (nframes, end_frame - start_frame - 1); + } + } return 0; }