Browse Source

Fixed a potential data race in AudioThumbnail

tags/2021-05-28
ed 6 years ago
parent
commit
290aad89f8
2 changed files with 4 additions and 3 deletions
  1. +2
    -2
      modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp
  2. +2
    -1
      modules/juce_audio_utils/gui/juce_AudioThumbnail.h

+ 2
- 2
modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp View File

@@ -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();
}
@@ -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


+ 2
- 1
modules/juce_audio_utils/gui/juce_AudioThumbnail.h View File

@@ -206,7 +206,8 @@ private:
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;


Loading…
Cancel
Save