[macOS] Replace deprecated CoreServices audio API with AudioToolbox #111
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
CoreServices
Audio API used to find/open/close audio components has been deprecated since macOS 10.8 (around 2012).While the framework has not been removed yet, I found that when running on macOS 13 on my M1 mac,
FindNextComponent
would systematically fail to find any component.The solution I found was to replace
CoreServices
withAudioToolbox
. It provides a very similar API and is available since macOS 10.0 so it would not change the minimum supported version. Additionally,AudioToolbox
already providesAudioUnit
, so linking the latter is no longer needed.The main difference is how errors are handled. Errors are returned in the
OSStatus
type, and should be checked against thenoErr
constant.Additionally, the files/class were renamed from
coreaudio
toaudiotoolbox
, this is mainly for consistency so the name in the settings and in source actually corresponds to what is being used.