in Source/AUEffectBase.cpp [153:182]
OSStatus AUEffectBase::SetProperty(AudioUnitPropertyID inID, AudioUnitScope inScope,
AudioUnitElement inElement, const void* inData, UInt32 inDataSize)
{
if (inScope == kAudioUnitScope_Global) {
switch (inID) {
case kAudioUnitProperty_BypassEffect: {
if (inDataSize < sizeof(UInt32)) {
return kAudioUnitErr_InvalidPropertyValue;
}
const bool tempNewSetting = *static_cast<const UInt32*>(inData) != 0;
// we're changing the state of bypass
if (tempNewSetting != IsBypassEffect()) {
if (!tempNewSetting && IsBypassEffect() &&
IsInitialized()) { // turning bypass off and we're initialized
Reset(0, 0);
}
SetBypassEffect(tempNewSetting);
}
return noErr;
}
case kAudioUnitProperty_InPlaceProcessing:
mProcessesInPlace = *static_cast<const UInt32*>(inData) != 0;
return noErr;
default:
break;
}
}
return AUBase::SetProperty(inID, inScope, inElement, inData, inDataSize);
}