From d8e07dca913fb7068052bc724ded92889bf0199f Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Fri, 28 Jun 2019 10:13:06 +0100 Subject: [PATCH] Fixed a data race in an example --- .../gui/juce_AudioVisualiserComponent.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp b/modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp index a13a489937..35714a3dcd 100644 --- a/modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp +++ b/modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp @@ -55,8 +55,10 @@ struct AudioVisualiserComponent::ChannelInfo { if (--subSample <= 0) { - nextSample %= levels.size(); - levels.getReference (nextSample++) = value; + if (++nextSample == levels.size()) + nextSample = 0; + + levels.getReference (nextSample) = value; subSample = owner.getSamplesPerBlock(); value = Range (newSample, newSample); } @@ -78,7 +80,7 @@ struct AudioVisualiserComponent::ChannelInfo AudioVisualiserComponent& owner; Array> levels; Range value; - int nextSample = 0, subSample = 0; + std::atomic nextSample { 0 }, subSample { 0 }; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChannelInfo) };