It was using the copy in the BGMApp project, but for historical reasons
they both have a separate copy of the PublicUtility classes. We haven't
gotten around to combining them yet, so this commit is to keep them
consistent until we do.
Also, some minor clean up in BGMDriver related to #218.
If the new client has the same bundle ID as an existing one, we now copy
its settings (volume, etc.) to the new client. This is to fix app
volumes not being applied consistently to apps that play audio through
multiple subprocesses (specifically Google Chrome). See #61.
The install and uninstall scripts try to restart coreaudiod in a number
of ways until one works. Despite that, it still wasn't always successful
when I tested it on macOS Catalina. This commit will hopefully fix that.
`sudo` is usually passwordless in Travis CI builds, but for some reason
`sudo -v` still causes a password prompt in macOS Travis builds.
_uninstall-non-interactive.sh already included a workaround for this,
but it doesn't work when the Travis build for the Homebrew Cask calls
`brew uninstall background-music`, which then calls
_uninstall-non-interactive.sh. The old workaround used the `TRAVIS` env
var, but Homebrew seems to run the script in an environment without it.
See <https://github.com/Homebrew/homebrew-cask/pull/67524>.
This is required for Notarization, which will be mandatory in macOS
Catalina.
Also, suppress some STL deprecation warnings in PublicUtility code. (The
warnings were recently added to Clang.)
The code for GPMDP is a lot more complicated than the code for other
music players. See BGMGooglePlayMusicDesktopPlayer.h for details.
Adds a class, BGMAppWatcher, to hold the code that notifies listeners
when a given app is launched or terminated.
Resolves#161.
Fixes the same issue as df9815a4be, but in
BGMOutputVolumeMenuItem instead of BGMStatusBarItem.
I think the problem was that it captured a weak reference in a C++
lambda, but it would capture by (C++) reference and when the reference
was used it would be referencing invalid memory. The fix to have the
lambda capture by value instead.
See #202.