summaryrefslogtreecommitdiff
path: root/libs/ardour/io.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/io.cc')
-rw-r--r--libs/ardour/io.cc21
1 files changed, 16 insertions, 5 deletions
diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc
index b994b17358..e245712fee 100644
--- a/libs/ardour/io.cc
+++ b/libs/ardour/io.cc
@@ -231,7 +231,7 @@ IO::silence (nframes_t nframes, nframes_t offset)
/* io_lock, not taken: function must be called from Session::process() calltree */
for (PortSet::iterator i = _outputs.begin(); i != _outputs.end(); ++i) {
- i->get_buffer().silence (nframes, offset);
+ i->get_buffer(nframes,offset).silence (nframes, offset);
}
}
@@ -323,8 +323,7 @@ IO::collect_input (BufferSet& outs, nframes_t nframes, nframes_t offset)
BufferSet::iterator o = outs.begin(*t);
for (PortSet::iterator i = _inputs.begin(*t); i != _inputs.end(*t); ++i, ++o) {
- (*i).cycle_start (nframes, offset);
- o->read_from(i->get_buffer(), nframes, offset);
+ o->read_from(i->get_buffer(nframes,offset), nframes, offset);
}
}
@@ -2766,8 +2765,20 @@ void
IO::prepare_inputs (nframes_t nframes, nframes_t offset)
{
/* io_lock, not taken: function must be called from Session::process() calltree */
+}
- for (PortSet::iterator i = _inputs.begin(); i != _inputs.end(); ++i) {
- (*i).cycle_start (nframes, offset);
+void
+IO::flush_outputs (nframes_t nframes, nframes_t offset)
+{
+ /* io_lock, not taken: function must be called from Session::process() calltree */
+ for (PortSet::iterator i = _outputs.begin(); i != _outputs.end(); ++i) {
+
+ /* Only run cycle_start() on output ports, because
+ inputs must be done in the correct processing order,
+ which requires interleaving with route processing.
+ */
+
+ (*i).flush_buffers (nframes, offset);
}
+
}