-
Notifications
You must be signed in to change notification settings - Fork 44
Description
I can't figure out how realtime-safe audio Reset is supposed to function in the 1.4.0 SDK release.
AUBase::BaseReset is a non-virtual no-op. The documentary comment says:
if a derived class wishes to implement a safe Reset, it can call BaseReset()
AUBase::Reset does as much, which will run the no-op. An override of AUBase::Reset could also call BaseReset, but it's still a no-op that cannot be itself overridden because it is not virtual, so what is the envisioned usage of this?
Similarly there is ResetRT in AUEffectBase which presents a means for by template invoking a non-virtual method also named ResetRT in AUKernelBase-derived classes, but still ResetRT is invoked nowhere in the existing Reset call paths, so I don't understand the purpose, why it is not a virtual method in AUKernelBase and called from AUEffectBase or anything like that?
And generally I am confused because Reset does need to be realtime safe and has strong reasons for being sometimes called from the realtime audio thread and definitely is by existing AU hosts, so I'm wondering why AUBase::Reset wasn't simply attributed as such, and then how any of these alternatives are actually expected to be used functionally by a client of the AU SDK?