summaryrefslogtreecommitdiff
path: root/libs/ardour/internal_send.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/internal_send.cc')
-rw-r--r--libs/ardour/internal_send.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc
index 7ca9319a1e..7c2c384276 100644
--- a/libs/ardour/internal_send.cc
+++ b/libs/ardour/internal_send.cc
@@ -72,7 +72,7 @@ InternalSend::send_to_going_away ()
void
InternalSend::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes)
{
- if (!_active || !target || !_send_to) {
+ if ((!_active && !_pending_active) || !target || !_send_to) {
_meter->reset ();
return;
}
@@ -102,7 +102,7 @@ InternalSend::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame,
_meter->reset ();
Amp::apply_simple_gain (sendbufs, nframes, 0.0);
- return;
+ goto out;
} else if (tgain != 1.0) {
@@ -130,6 +130,9 @@ InternalSend::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame,
/* deliver to target */
target->merge_from (sendbufs, nframes);
+
+ out:
+ _active = _pending_active;
}
bool