New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix sound pileup issue #14047
Fix sound pileup issue #14047
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should the cleanup code not be called in Play as well ?
Snapshot stored with reference name: Test environment: To test a playground add it to the URL, for example: https://babylonsnapshots.z22.web.core.windows.net/refs/pull/14047/merge/index.html#WGZLGJ#4600 Links to test babylon tools with this snapshot: https://playground.babylonjs.com/?snapshot=refs/pull/14047/merge To test the snapshot in the playground with a playground ID add it after the snapshot query string: https://playground.babylonjs.com/?snapshot=refs/pull/14047/merge#BCU1XR#0 |
Yep, thanks. Unit test added for this case, too. |
Sounds created with the
loop
orautoplay
options set while the audio engine is locked are started automatically when the audio engine is unlocked. If the newly created sound is stopped before the audio engine is unlocked, then the sound still plays when the audio engine is unlocked. This is unexpected. Stopped sounds should not play when the audio engine is unlocked.This change fixes the issue by clearing the 500 ms timeout used for double-checking the audio context state and removing the observer added to
AudioEngine.onAudioUnlockedObservable
when the sound stops, pauses, gets played again without being stopped, or when it gets disposed.Reported on forum https://forum.babylonjs.com/t/sound-pileup-in-chrome/42266.
Tested on Edge browser with playground https://playground.babylonjs.com/#0CNZFE#21.