From 837f05237d4ecf86f44e2574f15a923f02e45b23 Mon Sep 17 00:00:00 2001 From: jules Date: Sat, 19 Jan 2013 23:17:55 +0000 Subject: [PATCH] AudioProcessorGraph: added reset() method and adjusted locking. --- .../processors/juce_AudioProcessorGraph.cpp | 16 +++++++++++----- .../processors/juce_AudioProcessorGraph.h | 3 +-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp index d7bf3dd342..17c1eeaf04 100644 --- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp @@ -886,7 +886,7 @@ AudioProcessorGraph::Node::Node (const uint32 nodeId_, AudioProcessor* const pro processor (processor_), isPrepared (false) { - jassert (processor_ != nullptr); + jassert (processor != nullptr); } void AudioProcessorGraph::Node::prepare (const double sampleRate, const int blockSize, @@ -1167,7 +1167,7 @@ void AudioProcessorGraph::clearRenderingSequence() Array oldOps; { - const ScopedLock sl (renderLock); + const ScopedLock sl (getCallbackLock()); renderingOps.swapWithArray (oldOps); } @@ -1231,7 +1231,7 @@ void AudioProcessorGraph::buildRenderingSequence() { // swap over to the new rendering sequence.. - const ScopedLock sl (renderLock); + const ScopedLock sl (getCallbackLock()); renderingBuffers.setSize (numRenderingBuffersNeeded, getBlockSize()); renderingBuffers.clear(); @@ -1280,12 +1280,18 @@ void AudioProcessorGraph::releaseResources() currentMidiOutputBuffer.clear(); } +void AudioProcessorGraph::reset() +{ + const ScopedLock sl (getCallbackLock()); + + for (int i = 0; i < nodes.size(); ++i) + nodes.getUnchecked(i)->getProcessor()->reset(); +} + void AudioProcessorGraph::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) { const int numSamples = buffer.getNumSamples(); - const ScopedLock sl (renderLock); - currentAudioInputBuffer = &buffer; currentAudioOutputBuffer.setSize (jmax (1, buffer.getNumChannels()), numSamples); currentAudioOutputBuffer.clear(); diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h index a6a218a773..14ef440407 100644 --- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h @@ -360,6 +360,7 @@ public: void prepareToPlay (double sampleRate, int estimatedSamplesPerBlock); void releaseResources(); void processBlock (AudioSampleBuffer&, MidiBuffer&); + void reset(); const String getInputChannelName (int channelIndex) const; const String getOutputChannelName (int channelIndex) const; @@ -395,8 +396,6 @@ private: uint32 lastNodeId; AudioSampleBuffer renderingBuffers; OwnedArray midiBuffers; - - CriticalSection renderLock; Array renderingOps; friend class AudioGraphIOProcessor;