mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Added some locking to AudioThumbnail.
This commit is contained in:
parent
9bccfebea7
commit
296c2446b8
1 changed files with 7 additions and 3 deletions
|
|
@ -533,12 +533,12 @@ AudioThumbnail::~AudioThumbnail()
|
|||
void AudioThumbnail::clear()
|
||||
{
|
||||
source = nullptr;
|
||||
const ScopedLock sl (lock);
|
||||
clearChannelData();
|
||||
}
|
||||
|
||||
void AudioThumbnail::clearChannelData()
|
||||
{
|
||||
const ScopedLock sl (lock);
|
||||
window->invalidate();
|
||||
channels.clear();
|
||||
totalSamples = numSamplesFinished = 0;
|
||||
|
|
@ -550,6 +550,7 @@ void AudioThumbnail::clearChannelData()
|
|||
|
||||
void AudioThumbnail::reset (int newNumChannels, double newSampleRate, int64 totalSamplesInSource)
|
||||
{
|
||||
const ScopedLock sl (lock);
|
||||
clear();
|
||||
|
||||
numChannels = newNumChannels;
|
||||
|
|
@ -568,13 +569,14 @@ void AudioThumbnail::createChannels (const int length)
|
|||
//==============================================================================
|
||||
void AudioThumbnail::loadFrom (InputStream& rawInput)
|
||||
{
|
||||
clearChannelData();
|
||||
|
||||
BufferedInputStream input (rawInput, 4096);
|
||||
|
||||
if (input.readByte() != 'j' || input.readByte() != 'a' || input.readByte() != 't' || input.readByte() != 'm')
|
||||
return;
|
||||
|
||||
const ScopedLock sl (lock);
|
||||
clearChannelData();
|
||||
|
||||
samplesPerThumbSample = input.readInt();
|
||||
totalSamples = input.readInt64(); // Total number of source samples.
|
||||
numSamplesFinished = input.readInt64(); // Number of valid source samples that have been read into the thumbnail.
|
||||
|
|
@ -740,6 +742,7 @@ int64 AudioThumbnail::getNumSamplesFinished() const noexcept
|
|||
|
||||
float AudioThumbnail::getApproximatePeak() const
|
||||
{
|
||||
const ScopedLock sl (lock);
|
||||
int peak = 0;
|
||||
|
||||
for (int i = channels.size(); --i >= 0;)
|
||||
|
|
@ -751,6 +754,7 @@ float AudioThumbnail::getApproximatePeak() const
|
|||
void AudioThumbnail::getApproximateMinMax (const double startTime, const double endTime, const int channelIndex,
|
||||
float& minValue, float& maxValue) const noexcept
|
||||
{
|
||||
const ScopedLock sl (lock);
|
||||
MinMaxValue result;
|
||||
const ThumbData* const data = channels [channelIndex];
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue