Browse Source

AudioWorkgroup: Fix an issue with copying objects in an objective-c block

v7.0.9
Anthony Nicholls 2 years ago
parent
commit
5e1865c1c2
1 changed files with 8 additions and 18 deletions
  1. +8
    -18
      modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm

+ 8
- 18
modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm View File

@@ -406,8 +406,8 @@ public:
#if JUCE_AUDIOWORKGROUP_TYPES_AVAILABLE
case kAudioUnitProperty_RenderContextObserver:
outWritable = false;
outDataSize = sizeof (AURenderContextObserver);
outWritable = false;
return noErr;
#endif
@@ -584,14 +584,15 @@ public:
#if JUCE_AUDIOWORKGROUP_TYPES_AVAILABLE
case kAudioUnitProperty_RenderContextObserver:
{
if (auto* ptr = (AURenderContextObserver*) outData)
AURenderContextObserver callback = ^(const AudioUnitRenderContext* context)
{
*ptr = contextObserver;
return noErr;
}
jassert (juceFilter != nullptr);
const auto workgroup = makeRealAudioWorkgroup (context != nullptr ? context->workgroup : nullptr);
juceFilter->audioWorkgroupContextChanged (workgroup);
};
jassertfalse;
break;
*(AURenderContextObserver*) outData = [callback copy];
return noErr;
}
#endif
@@ -2027,17 +2028,6 @@ private:
HeapBlock<bool> pulledSucceeded;
HeapBlock<MIDIPacketList> packetList { packetListBytes, 1 };
#if JUCE_AUDIOWORKGROUP_TYPES_AVAILABLE
ObjCBlock<AURenderContextObserver> contextObserver { ^(const AudioUnitRenderContext* context)
{
if (juceFilter == nullptr)
return;
auto workgroup = makeRealAudioWorkgroup (context != nullptr ? context->workgroup : nullptr);
juceFilter->audioWorkgroupContextChanged (std::move (workgroup));
} };
#endif
ThreadLocalValue<bool> inParameterChangedCallback;
AudioProcessorChangedUpdater audioProcessorChangedUpdater { *this };


Loading…
Cancel
Save