summaryrefslogtreecommitdiff
path: root/libs/ardour/internal_return.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/internal_return.cc')
-rw-r--r--libs/ardour/internal_return.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/libs/ardour/internal_return.cc b/libs/ardour/internal_return.cc
index 37a559649c..f6c99d8518 100644
--- a/libs/ardour/internal_return.cc
+++ b/libs/ardour/internal_return.cc
@@ -46,7 +46,11 @@ InternalReturn::InternalReturn (Session& s, const XMLNode& node)
void
InternalReturn::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes)
{
- /* XXX no lock here, just atomic fetch */
+ if (!_active && !_pending_active) {
+ return;
+ }
+
+ /* no lock here, just atomic fetch */
if (g_atomic_int_get(&user_count) == 0) {
/* nothing to do - nobody is feeding us anything */
@@ -54,6 +58,7 @@ InternalReturn::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame
}
bufs.merge_from (buffers, nframes);
+ _active = _pending_active;
}
bool