webxr: Update XRInputSource Gamepad handling, FakeXRInputController (#33403)

* Disconnect XRInputSource gamepads on removal

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Update Cargo.lock

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Comments, adjustments

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Update expectations

Signed-off-by: Daniel Adams <msub2official@gmail.com>

---------

Signed-off-by: Daniel Adams <msub2official@gmail.com>
This commit is contained in:
Daniel Adams 2024-09-12 01:52:16 +00:00 committed by GitHub
parent d9be9d6bd4
commit 08a4d751d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 84 additions and 29 deletions

View file

@ -33,6 +33,7 @@ use crate::dom::bindings::codegen::Bindings::WindowBinding::Window_Binding::Wind
use crate::dom::bindings::codegen::Bindings::XRHitTestSourceBinding::{
XRHitTestOptionsInit, XRHitTestTrackableType,
};
use crate::dom::bindings::codegen::Bindings::XRInputSourceArrayBinding::XRInputSourceArray_Binding::XRInputSourceArrayMethods;
use crate::dom::bindings::codegen::Bindings::XRReferenceSpaceBinding::XRReferenceSpaceType;
use crate::dom::bindings::codegen::Bindings::XRRenderStateBinding::{
XRRenderStateInit, XRRenderStateMethods,
@ -867,6 +868,11 @@ impl XRSessionMethods for XRSession {
self.ended.set(true);
global.as_window().Navigator().Xr().end_session(self);
self.session.borrow_mut().end_session();
// Disconnect any still-attached XRInputSources
for source in 0..self.input_sources.Length() {
self.input_sources
.remove_input_source(self, InputId(source));
}
p
}