From 1f93abaf0efa45065a7e5a0208186b1276305110 Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 11 Mar 2008 11:59:01 +0000 Subject: [PATCH] --- .../audio/audio_sources/juce_ResamplingAudioSource.cpp | 6 ++++++ .../audio/audio_sources/juce_ResamplingAudioSource.h | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/juce_appframework/audio/audio_sources/juce_ResamplingAudioSource.cpp b/src/juce_appframework/audio/audio_sources/juce_ResamplingAudioSource.cpp index 30424b8662..d74a3cb3da 100644 --- a/src/juce_appframework/audio/audio_sources/juce_ResamplingAudioSource.cpp +++ b/src/juce_appframework/audio/audio_sources/juce_ResamplingAudioSource.cpp @@ -34,6 +34,7 @@ BEGIN_JUCE_NAMESPACE #include "juce_ResamplingAudioSource.h" +#include "../../../juce_core/threads/juce_ScopedLock.h" //============================================================================== @@ -59,12 +60,15 @@ void ResamplingAudioSource::setResamplingRatio (const double samplesInPerOutputS { jassert (samplesInPerOutputSample > 0); + const ScopedLock sl (ratioLock); ratio = jmax (0.0, samplesInPerOutputSample); } void ResamplingAudioSource::prepareToPlay (int samplesPerBlockExpected, double sampleRate) { + const ScopedLock sl (ratioLock); + input->prepareToPlay (samplesPerBlockExpected, sampleRate); buffer.setSize (2, roundDoubleToInt (samplesPerBlockExpected * ratio) + 32); @@ -85,6 +89,8 @@ void ResamplingAudioSource::releaseResources() void ResamplingAudioSource::getNextAudioBlock (const AudioSourceChannelInfo& info) { + const ScopedLock sl (ratioLock); + if (lastRatio != ratio) { createLowPass (ratio); diff --git a/src/juce_appframework/audio/audio_sources/juce_ResamplingAudioSource.h b/src/juce_appframework/audio/audio_sources/juce_ResamplingAudioSource.h index d0ea015fb5..615fded10d 100644 --- a/src/juce_appframework/audio/audio_sources/juce_ResamplingAudioSource.h +++ b/src/juce_appframework/audio/audio_sources/juce_ResamplingAudioSource.h @@ -33,7 +33,7 @@ #define __JUCE_RESAMPLINGAUDIOSOURCE_JUCEHEADER__ #include "juce_AudioSource.h" - +#include "../../../juce_core/threads/juce_CriticalSection.h" //============================================================================== /** @@ -89,6 +89,7 @@ private: int bufferPos, sampsInBuffer; double subSampleOffset; double coefficients[6]; + CriticalSection ratioLock; void setFilterCoefficients (double c1, double c2, double c3, double c4, double c5, double c6); void createLowPass (const double proportionalRate);