* be set to 0.
*/
void
-PeakMeter::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes)
+PeakMeter::run (BufferSet& bufs, sframes_t /*start_frame*/, sframes_t /*end_frame*/, nframes_t nframes)
{
- if (!_active) {
+ if (!_active && !_pending_active) {
return;
}
for (uint32_t i = n; i < _peak_power.size(); ++i) {
_peak_power[i] = 0.0f;
}
+
+ _active = _pending_active;
}
PeakMeter::PeakMeter (Session& s, const XMLNode& node)
void
PeakMeter::meter ()
{
+ if (!_active) {
+ return;
+ }
+
assert(_visible_peak_power.size() == _peak_power.size());
const size_t limit = _peak_power.size();
float new_peak = _peak_power[n]; /* XXX we should use atomic exchange from here ... */
_peak_power[n] = 0; /* ... to here */
-
+
/* compute new visible value using falloff */
if (new_peak > 0.0) {
return node;
}
+
+bool
+PeakMeter::visible() const
+{
+ return true;
+}