summaryrefslogtreecommitdiff
path: root/libs/ardour/delayline.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-09-29 04:07:20 +0200
committerRobin Gareus <robin@gareus.org>2017-09-29 05:03:48 +0200
commiteb6df8939dfb483b46b0549f39db219876bd4d2c (patch)
treebde06bc430e61a3e98a2ddc10bf05fef9cf050fc /libs/ardour/delayline.cc
parent5a2ea4d0e2b9afb23da25e43e1f6b7a3cbe4df11 (diff)
Delayline: report if set_delay() actually changed the delay
Diffstat (limited to 'libs/ardour/delayline.cc')
-rw-r--r--libs/ardour/delayline.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/ardour/delayline.cc b/libs/ardour/delayline.cc
index d92eec6a0a..0416a9a0bb 100644
--- a/libs/ardour/delayline.cc
+++ b/libs/ardour/delayline.cc
@@ -283,7 +283,7 @@ DelayLine::run (BufferSet& bufs, samplepos_t /* start_sample */, samplepos_t /*
_delay = pending_delay;
}
-void
+bool
DelayLine::set_delay(samplecnt_t signal_delay)
{
if (signal_delay < 0) {
@@ -291,13 +291,20 @@ DelayLine::set_delay(samplecnt_t signal_delay)
cerr << "WARNING: latency compensation is not possible.\n";
}
+ if (signal_delay == _pending_delay) {
+ DEBUG_TRACE (DEBUG::LatencyCompensation,
+ string_compose ("%1 set_delay - no change: %2 samples for %3 channels\n",
+ name(), signal_delay, _configured_output.n_audio()));
+ return false;
+ }
+
DEBUG_TRACE (DEBUG::LatencyCompensation,
string_compose ("%1 set_delay to %2 samples for %3 channels\n",
name(), signal_delay, _configured_output.n_audio()));
if (signal_delay <= _bsiz) {
_pending_delay = signal_delay;
- return;
+ return true;
}
if (_pending_bsiz) {
@@ -306,7 +313,7 @@ DelayLine::set_delay(samplecnt_t signal_delay)
} else {
_pending_delay = signal_delay;
}
- return;
+ return true;
}
allocate_pending_buffers (signal_delay);
@@ -316,6 +323,8 @@ DelayLine::set_delay(samplecnt_t signal_delay)
DEBUG_TRACE (DEBUG::LatencyCompensation,
string_compose ("allocated buffer for %1 of size %2\n",
name(), signal_delay));
+
+ return true;
}
bool