I learnt some things about the AU wrapper.
The updateHostDisplay invalidates the parameters by calling:
void audioProcessorChanged (AudioProcessor*) override
{
PropertyChanged (kAudioUnitProperty_Latency, kAudioUnitScope_Global, 0);
PropertyChanged (kAudioUnitProperty_ParameterList, kAudioUnitScope_Global, 0);
PropertyChanged (kAudioUnitProperty_ParameterInfo, kAudioUnitScope_Global, 0);
refreshCurrentPreset();
PropertyChanged (kAudioUnitProperty_PresentPreset, kAudioUnitScope_Global, 0);
}
So this also triggers a call to AudioProcessor::getStateInformation (MemoryBlock& destData). And other hosts like Logic will read everything when save is triggered by the user.
However, FinalCut doesn’t save on the users, but constantly in the background. And also it has to synchronise the state with several parallel running background threads/instances. Therefore it only updates the parts, that are marked as dirty.
So I assume, I have to mark the effectState property as dirty as well, but there is a long enum that I can send as invalid. Does anybody (especially @fabian) have an idea, which that could be?
Or maybe there is another way to trigger an update of the effectState?
Thanks for all your hints!
