| @@ -406,8 +406,8 @@ public: | |||||
| #if JUCE_AUDIOWORKGROUP_TYPES_AVAILABLE | #if JUCE_AUDIOWORKGROUP_TYPES_AVAILABLE | ||||
| case kAudioUnitProperty_RenderContextObserver: | case kAudioUnitProperty_RenderContextObserver: | ||||
| outWritable = false; | |||||
| outDataSize = sizeof (AURenderContextObserver); | outDataSize = sizeof (AURenderContextObserver); | ||||
| outWritable = false; | |||||
| return noErr; | return noErr; | ||||
| #endif | #endif | ||||
| @@ -584,14 +584,15 @@ public: | |||||
| #if JUCE_AUDIOWORKGROUP_TYPES_AVAILABLE | #if JUCE_AUDIOWORKGROUP_TYPES_AVAILABLE | ||||
| case kAudioUnitProperty_RenderContextObserver: | 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 | #endif | ||||
| @@ -2027,17 +2028,6 @@ private: | |||||
| HeapBlock<bool> pulledSucceeded; | HeapBlock<bool> pulledSucceeded; | ||||
| HeapBlock<MIDIPacketList> packetList { packetListBytes, 1 }; | 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; | ThreadLocalValue<bool> inParameterChangedCallback; | ||||
| AudioProcessorChangedUpdater audioProcessorChangedUpdater { *this }; | AudioProcessorChangedUpdater audioProcessorChangedUpdater { *this }; | ||||