When flushing the buffers of Delivery processors owned by a Route/Track,
inner deliveries of PortInsert processors were missed since PortInsert
is not a Delivery subclass, but rather owns a Delivery as a private
member. Expose a flush_buffers() for PortInsert and call it too.
This is correct since (external) Send is a Delivery subclass, so that
just makes the send part of inserts behave as external sends do.
#include "ardour/ardour.h"
#include "ardour/io_processor.h"
+#include "ardour/delivery.h"
#include "ardour/libardour_visibility.h"
#include "ardour/types.h"
void run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, double speed, pframes_t nframes, bool);
+ void flush_buffers (framecnt_t nframes) {
+ _out->flush_buffers (nframes);
+ }
+
framecnt_t signal_latency () const;
bool set_name (const std::string& name);
boost::shared_ptr<Delivery> d = boost::dynamic_pointer_cast<Delivery> (*i);
if (d) {
d->flush_buffers (nframes);
+ } else {
+ boost::shared_ptr<PortInsert> p = boost::dynamic_pointer_cast<PortInsert> (*i);
+ if (p) {
+ p->flush_buffers (nframes);
+ }
}
}
}