+ if (result_required) {
+ /* "bufs" are internal, meaning they should never reflect
+ split-cycle offsets. So shift events back in time from where
+ they were for the external buffers associated with Ports.
+ */
+
+ const BufferSet& outs (output_buffers());
+ bufs.set_count (output_buffers().count ());
+
+ for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
+
+ uint32_t n = 0;
+ for (BufferSet::iterator b = bufs.begin (*t); b != bufs.end (*t); ++b) {
+ if (outs.count ().get (*t) <= n) {
+ continue;
+ }
+ b->read_from (outs.get (*t, n++), nframes, (*t == DataType::AUDIO ? 0 : -Port::port_offset()));
+ }
+ }
+ }