Skip to content

Commit

Permalink
Fixed a potential data race in AudioThumbnail
Browse files Browse the repository at this point in the history
  • Loading branch information
ed95 committed Mar 25, 2019
1 parent e5ce2ce commit 290aad8
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 3 deletions.
4 changes: 2 additions & 2 deletions modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp
Expand Up @@ -740,7 +740,7 @@ void AudioThumbnail::setLevels (const MinMaxValue* const* values, int thumbIndex
if (numSamplesFinished >= start && end > numSamplesFinished)
numSamplesFinished = end;

totalSamples = jmax (numSamplesFinished, totalSamples);
totalSamples = jmax (numSamplesFinished, totalSamples.load());
window->invalidate();
sendChangeMessage();
}
Expand All @@ -763,7 +763,7 @@ bool AudioThumbnail::isFullyLoaded() const noexcept

double AudioThumbnail::getProportionComplete() const noexcept
{
return jlimit (0.0, 1.0, numSamplesFinished / (double) jmax ((int64) 1, totalSamples));
return jlimit (0.0, 1.0, numSamplesFinished / (double) jmax ((int64) 1, totalSamples.load()));
}

int64 AudioThumbnail::getNumSamplesFinished() const noexcept
Expand Down
3 changes: 2 additions & 1 deletion modules/juce_audio_utils/gui/juce_AudioThumbnail.h
Expand Up @@ -206,7 +206,8 @@ class JUCE_API AudioThumbnail : public AudioThumbnailBase
OwnedArray<ThumbData> channels;

int32 samplesPerThumbSample = 0;
int64 totalSamples = 0, numSamplesFinished = 0;
std::atomic<int64> totalSamples { 0 };
int64 numSamplesFinished = 0;
int32 numChannels = 0;
double sampleRate = 0;
CriticalSection lock;
Expand Down

0 comments on commit 290aad8

Please sign in to comment.