Commit graph

293 commits

Author SHA1 Message Date
Kyle Neideck
70a64de734
Fix apps failing to start audio after upgrading Background Music.
A macOS bug was stopping BGMXPCHelper from running, which would stop
BGMDevice from starting IO. It would wait in StartIO until timing out.

I'm not sure why that didn't cause BGMDriver's XPC connection fail. If
it had, BGMDevice would have just started IO without waiting for BGMApp
to be ready. The it would have just dropped some initial frames and
logged an error instead of freezing for 30 seconds.

The fix/workaround is to delete the old version of BGMXPCHelper before
installing the new one.
2020-04-19 16:43:17 +10:00
Kyle Neideck
488ed16dfc
Hopefully fix a segfault caused by BGM_PlayThrough.
Issue #276 reported a segfault that occurred while BGMApp was launching.
It was caused by BGM_PlayThrough's output IOProc when it tried to read
from the ring buffer. I haven't been able to reproduce the problem, so I
don't know whether this commit will actually fix it. Hopefully it will
at least make it easier to diagnose.

This commit adds locking around accesses to the buffer so that the
IOProcs will skip the current IO cycle if it isn't safe to use the ring
buffer. That should only happen during launch or when changing the
output device. (And only if something else has gone wrong.)
2020-04-18 22:00:49 +10:00
Kyle Neideck
8499b85736
Add known issue to the README: only stereo devices currently work.
Also:
 - Explain why Background Music needs "microphone access".
 - Add BlackHole to the related projects.
2020-04-10 22:21:32 +10:00
Kyle Neideck
1a2c880b32
Merge pull request #279 from Anaxilaus/master
Add troubleshooting tips
2020-04-09 19:35:08 +10:00
Mert Dede
4cfc8df48a
Update README.md
Add tip to troubleshooting for meeting softwares.
2020-04-09 12:27:25 +03:00
Mert Dede
4ff3db4238
Update README.md
Add troubleshooting warning for experienced OS issues.
2020-04-09 12:19:18 +03:00
Kyle Neideck
23ecf7e46e
Fix BGMDriver and BGMXPCHelper's version strings for SNAPSHOT builds.
And DEBUG builds. The "-SNAPSHOT-abc0123" suffix was only being added to
the version string for BGMApp.
2020-02-09 22:18:52 +11:00
Kyle Neideck
63b458abdc
Limit the installer logs copied into the Travis logs. 2020-02-09 21:31:26 +11:00
Kyle Neideck
d95b0d8b1a
Add a repackage option (-r) to package.sh.
It takes an expanded Background Music .pkg installer and repackages it
into a new .pkg installer. It's mainly useful for code signing, since
you have to expand the unsigned package, sign each of the bundles,
repackage it and then sign the new package.

Also, fix build_and_install.sh putting the BGMXPCHelper dSYMs in the
wrong archive.
2020-02-09 20:19:41 +11:00
Kyle Neideck
8de821d4aa
Add an archive option (-a) to build_and_install.sh.
Archiving is the standard way to build a release for distribution using
Xcode. package.sh now uses this option when it creates a release
package.

This change is mainly to keep the Run settings in the Xcode schemes from
affecting the release builds, which means we can commit the schemes with
more sensible settings.

Also, disable AddressSanitizer in the BGMDevice scheme, which was
stopping coreaudiod from launching because its sandbox won't allow the
process to load the AddressSanitizer dylib.
2020-02-05 00:09:14 +11:00
Kyle Neideck
08d428c948
Merge branch 'CodeNameFox06-patch-1' 2020-01-25 19:17:59 +11:00
Kyle Neideck
1710b93333
Merge branch 'patch-1' of https://github.com/CodeNameFox06/BackgroundMusic into CodeNameFox06-patch-1 2020-01-25 19:17:02 +11:00
Kyle Neideck
2c1677305d
Add optional debug logging in release builds.
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.
2020-01-24 08:07:34 +11:00
Kyle Neideck
8ca17bb5f8
Fix occasional IO deadline misses in BGM_Device.
Seems to have been introduced by my previous commit.
2019-12-01 14:04:57 +11:00
Kyle Neideck
120606b95e
Fix the BGMDriver tests not compiling. 2019-11-30 22:36:17 +11:00
Kyle Neideck
5fc615bdb5
Add a copy of CARingBuffer to the BGMDriver project.
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.
2019-11-30 21:04:21 +11:00
Gordon Childs
40f0128dcd
first attempt at using CARingBuffer 2019-11-30 21:04:21 +11:00
Kyle Neideck
76e63965db
Update the download link in the README for v0.3.2. 2019-11-18 20:13:22 +11:00
Kyle Neideck
151c41599e
Update the command to restart coreaudiod in MANUAL-INSTALL.md. 2019-11-17 16:17:16 +11:00
Kyle Neideck
bab1ec9e96
build_and_install.sh: Update the Xcode Command Line Tools check.
The current method of checking the CLI Tools are installed doesn't seem
to work with newer versions of Xcode.
2019-10-17 12:41:47 +11:00
Kyle Neideck
0913671557
Update a command MANUAL-UNINSTALL.md to work on macOS Catalina. 2019-10-17 12:40:26 +11:00
Kyle Neideck
3221888a96
Update the Xcode version for Travis builds and make releases drafts.
That way I can code sign the releases before making them available and
never publish the unsigned releases.
2019-10-17 12:37:05 +11:00
CodeNameFox06
c9f2270b31
Update README.md 2019-10-12 15:09:47 +05:30
Kyle Neideck
c024116cd4
Merge branch 'master' of https://github.com/kyleneideck/BackgroundMusic 2019-09-16 01:40:13 +10:00
Kyle Neideck
35d1b17c39
Merge pull request #238 from AshleyEM/master
Updated README.md (WIP)
2019-08-31 14:31:43 +10:00
AshleyEM
e8e11bae32
Update README.md 2019-08-30 10:59:17 -07:00
AshleyEM
be2e9b46db
Fixes
- Formatting
- Wording
- Moved information
- Removed manual install/uninstall
2019-08-26 19:34:29 -07:00
AshleyEM
2e8caeed48
Fixed wording
Changed "another audio source is playing" to "other audio sources are playing".
2019-08-25 10:30:18 -07:00
AshleyEM
8f04d9afc1
Update README.md 2019-08-23 15:53:27 -07:00
AshleyEM
ad13915d70
Update README.md 2019-08-23 15:52:52 -07:00
AshleyEM
2b71621c33
Update README.md 2019-08-23 15:44:15 -07:00
AshleyEM
884dd8fd0a
Update README.md 2019-08-23 15:19:57 -07:00
AshleyEM
904cb9b345
Update README.md 2019-08-23 14:44:52 -07:00
AshleyEM
85d2df909e
Update README.md 2019-08-23 14:18:26 -07:00
AshleyEM
966987702c
Update README.md 2019-08-23 14:13:34 -07:00
AshleyEM
5c0d806e57
Update README.md 2019-08-23 14:10:22 -07:00
AshleyEM
fc55ce1c54
Update README.md 2019-08-21 16:31:45 -07:00
AshleyEM
d7cb6e9318
Update README.md 2019-08-21 15:27:23 -07:00
AshleyEM
e5043e3fe0
Update README.md 2019-08-19 15:44:58 -07:00
AshleyEM
c652955a04
Update README.md 2019-08-19 14:25:12 -07:00
AshleyEM
f3ef314cd9
Update README.md 2019-08-19 14:16:32 -07:00
Kyle Neideck
f61f998c51
BGMDriver: Copy settings when a new client matches an existing one.
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.
2019-08-17 16:16:17 +10:00
Kyle Neideck
dfad77dc35
Add app volume workaround for Google Chrome. See #61. 2019-08-17 15:28:16 +10:00
Kyle Neideck
4c7eba30af
Make sure the installer launches BGMApp as the logged-in user. 2019-08-17 15:20:47 +10:00
Kyle Neideck
e6e784b013
Add an additional method for restarting coreaudiod.
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.
2019-08-17 15:17:51 +10:00
Kyle Neideck
8ed95eb83b
Make sure Homebrew Travis CI builds won't show a password prompt.
`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>.
2019-08-14 21:58:10 +10:00
Kyle Neideck
7f6c0e9d4f
Update the README to link to v0.3.1.
Also, bump the minor version number.
2019-08-13 18:46:25 +10:00
Kyle Neideck
9e50e2348b
Bump the patch version. I code signed v0.3.0 incorrectly. #233 2019-08-13 10:13:52 +10:00
Kyle Neideck
0388b26aa1
Add Xcode 11 to Travis CI builds. 2019-08-06 17:24:25 +10:00
Kyle Neideck
002afc0cd1
Update copyright years. #227 2019-08-05 22:42:17 +10:00