From 5e1865c1c2f289365205d2c8d159ccaa0252b058 Mon Sep 17 00:00:00 2001 From: Anthony Nicholls Date: Tue, 19 Sep 2023 09:29:49 +0100 Subject: [PATCH] AudioWorkgroup: Fix an issue with copying objects in an objective-c block --- .../juce_audio_plugin_client_AU_1.mm | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm b/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm index 009fd86150..f1f39ca92f 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm @@ -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 pulledSucceeded; HeapBlock packetList { packetListBytes, 1 }; - #if JUCE_AUDIOWORKGROUP_TYPES_AVAILABLE - ObjCBlock contextObserver { ^(const AudioUnitRenderContext* context) - { - if (juceFilter == nullptr) - return; - - auto workgroup = makeRealAudioWorkgroup (context != nullptr ? context->workgroup : nullptr); - juceFilter->audioWorkgroupContextChanged (std::move (workgroup)); - } }; - #endif - ThreadLocalValue inParameterChangedCallback; AudioProcessorChangedUpdater audioProcessorChangedUpdater { *this };