WebXR fix overlaping rAF callbacks #6244
Merged
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.
Previously in Quest 3 and Emulator as well as the other places when launching the WebXR session, the browser requestAnimationFrame would not trigger, and you would need to queue up rAF from the XRSession instead of window.
But with recent changes, they've changed it, so you can have multiple request animation frames, from the XRSession and from the window, which leads to double application updates per frame. This is an issue of course.
This PR fixes that and avoids overlapping rAF callbacks per frame by cancelling any existing rAF callbacks when calling AppBase.tick.
For rendering in an overlay browser window while in a WebXR session, we would need to figure out how to handle that separately, and ensure we do avoid multiple application update calls per actual frame.
I confirm I have read the contributing guidelines and signed the Contributor License Agreement.