realtime Reset
- Dominant language
- C++
- Stars
- 223
- Forks
- 48
- PR merge metrics
- No merged PRs in 30d
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?
Contributor guide
Assessment
This issue has not been assessed yet.