From 1b217d13ec116ce190e94603995946c66a567c6f Mon Sep 17 00:00:00 2001 From: hogliux Date: Mon, 19 Sep 2016 18:54:44 +0100 Subject: [PATCH] Zero out buffers if pulling audio returns an error in the AU wrapper --- .../juce_audio_plugin_client/AU/juce_AU_Wrapper.mm | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm index 990b927645..ae5f082ae0 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm @@ -1069,9 +1069,7 @@ public: // prepare buffers { - if (! pullInputAudio (ioActionFlags, inTimeStamp, nFrames)) - return noErr; - + pullInputAudio (ioActionFlags, inTimeStamp, nFrames); prepareOutputBuffers (nFrames); audioBuffer.reset(); } @@ -1516,23 +1514,21 @@ private: AudioUnitHelpers::ChannelRemapper mapper; //============================================================================== - bool pullInputAudio (AudioUnitRenderActionFlags& flags, const AudioTimeStamp& timestamp, const UInt32 nFrames) noexcept + void pullInputAudio (AudioUnitRenderActionFlags& flags, const AudioTimeStamp& timestamp, const UInt32 nFrames) noexcept { const unsigned int numInputBuses = GetScope (kAudioUnitScope_Input).GetNumberOfElements(); + OSStatus err; for (unsigned int i = 0; i < numInputBuses; ++i) { if (AUInputElement* input = GetInput (i)) { - if (input->PullInput (flags, timestamp, i, nFrames) != noErr) - return false; // logic sometimes doesn't connect all the inputs immedietely + err = input->PullInput (flags, timestamp, i, nFrames); - if ((flags & kAudioUnitRenderAction_OutputIsSilence) != 0) + if ((flags & kAudioUnitRenderAction_OutputIsSilence) != 0 || err != noErr) AudioUnitHelpers::clearAudioBuffer (input->GetBufferList()); } } - - return true; } void prepareOutputBuffers (const UInt32 nFrames) noexcept