BUG: OpenXR Session State flow (Pausing/Resuming) broken on v77
About 80% of the time, Pausing / Resuming my application results in the runtime:
- Failing to send a XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED event
- The application thinking it's still VISIBLE not FOCUSED and not simulating / accepting input
- The system menu button becoming unresponsive
This leaves the headset in a broken state where the game renders, the menu is closed, and all inputs are ignored. It can only be fixed by:
- restarting the headset
- tapping the headset to force it into passthrough, which restores controller input, at which point the application can be reliably resumed via the Resume button in the system menu
I have observed this bug across multiple headsets on an identical codebase, it was not present in previous OS versions, appeared on one headset as it updated, and now has appeared on another headset as it has updated.
There are no mitigations available for this bug, the application cannot proactively query session state to mitigate the runtime dropping the event, xrPollEvents is the only mechanism to get session state.