As of MacOS 13, System Preferences is known as System Settings. This
commit updates all user facing references to System Preferences, using
the new nomenclature.
`brew cask install` appears to be deprecated, and using it gets this warning:
```Warning: Calling brew cask install is deprecated! Use brew install
[--cask] instead.```
So this is a super small change in README to reflect that.
Clicking the status bar icon with the option key held now reveals a
setting that enables debug logging in BGMApp. It's enabled by default in
debug builds.
It doesn't enable debug logging in BGMDriver or BGMXPCHelper yet.
This will hopefully make it easier for people to include logs when they
report bugs that don't occur with most hardware or are otherwise hard to
reproduce.
Enabling debug logging should be unlikely to cause audio glitches, but I
haven't tried to make it completely safe.
Also,
- add some basic unit tests for BGMPlayThrough and expand the mocks for
the CoreAudio HAL API,
- fix the UI tests so you can run them without code signing them, and
- update copyright years.
BGMApp has to set BGMDevice, and often also the Null Device for a short
time, as the systemwide default audio device, which makes CoreAudio put
them in the preferred devices list in its Plist file. And since the list
is limited to three devices, it only gives us one or two usable ones.
Ideally, CoreAudio just wouldn't add our devices to its list, but I
don't think we can prevent that.
As a partial workaround, we now store our own copy of the preferred
devices list without our devices, which BGMApp can use to figure out
which devices were pushed out of CoreAudio's list by our devices.
This doesn't fix the problem entirely because our devices still take up
room in CoreAudio's list when BGMApp is closed, but I think that would
be harder to solve.
See #167.
Also:
- Handle setting the initial output device in BGMPreferredOutputDevices
instead of BGMAudioDeviceManager.
- Fix a crash in BGMOutputVolumeMenuItem::dealloc caused by using
dispatch_sync to dispatch to the main queue while running on the main
queue.
- Fix a crash in BGMPreferredOutputDevices if
/Library/Preferences/Audio/com.apple.audio.SystemSettings.plist
doesn't exist.
- Add Swinsian to the list of music players in the README. (I must have
forgotten to do that when I added support for it.)