summaryrefslogtreecommitdiff
path: root/libs/ardour/send.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-11-25 23:29:52 +0000
committerCarl Hetherington <carl@carlh.net>2009-11-25 23:29:52 +0000
commit47b8fa21699e58f733f0ecb879193092f93c93d8 (patch)
treea47e1b89847432a89dba16f09cf8dc4700ee8d6f /libs/ardour/send.cc
parentfe59ade87415d72072009f1e77a892f9989819a0 (diff)
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
Diffstat (limited to 'libs/ardour/send.cc')
-rw-r--r--libs/ardour/send.cc8
1 files changed, 4 insertions, 4 deletions
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);
}
}