Also flush buffers of the inner delivery of inserts
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.
This commit is contained in:
parent
8af589b322
commit
9ba6e938d8
@ -26,6 +26,7 @@
|
||||
|
||||
#include "ardour/ardour.h"
|
||||
#include "ardour/io_processor.h"
|
||||
#include "ardour/delivery.h"
|
||||
#include "ardour/libardour_visibility.h"
|
||||
#include "ardour/types.h"
|
||||
|
||||
@ -54,6 +55,10 @@ class LIBARDOUR_API PortInsert : public IOProcessor
|
||||
|
||||
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);
|
||||
|
@ -3398,6 +3398,11 @@ Route::flush_processor_buffers_locked (framecnt_t nframes)
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user