From 47b8fa21699e58f733f0ecb879193092f93c93d8 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 25 Nov 2009 23:29:52 +0000 Subject: Give Processor::run a new parameter to say whether or not the run method must leave the passed-in buffers valid. In the case where the main outs delivery is the last processor in a route, this is not necessary (and wasteful). If another processor (e.g. a meter) follows the main outs, the passed-in (scratch) buffers must be valid or the meter will get garbage data. Fixes meters displaying phantom signals in some cases. git-svn-id: svn://localhost/ardour2/branches/3.0@6180 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/send.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libs/ardour/send.cc') diff --git a/libs/ardour/send.cc b/libs/ardour/send.cc index 91e6827e61..6117b09be2 100644 --- a/libs/ardour/send.cc +++ b/libs/ardour/send.cc @@ -87,7 +87,7 @@ Send::deactivate () } void -Send::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes) +Send::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes, bool) { if (_output->n_ports() == ChanCount::ZERO) { _meter->reset (); @@ -114,11 +114,11 @@ Send::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_ // Can't automate gain for sends or returns yet because we need different buffers // so that we don't overwrite the main automation data for the route amp // _amp->setup_gain_automation (start_frame, end_frame, nframes); - _amp->run (sendbufs, start_frame, end_frame, nframes); + _amp->run (sendbufs, start_frame, end_frame, nframes, true); /* deliver to outputs */ - Delivery::run (sendbufs, start_frame, end_frame, nframes); + Delivery::run (sendbufs, start_frame, end_frame, nframes, true); /* consider metering */ @@ -126,7 +126,7 @@ Send::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_ if (_amp->gain_control()->get_value() == 0) { _meter->reset(); } else { - _meter->run (*_output_buffers, start_frame, end_frame, nframes); + _meter->run (*_output_buffers, start_frame, end_frame, nframes, true); } } -- cgit v1.2.3