Skip to content
Permalink
Browse files

Use initialized input sources in getInputSources()

  • Loading branch information...
Manishearth committed Apr 30, 2019
1 parent 3a08e91 commit 5c8132c379a2d5612d5c904c7fe65b54d7f8ec70
@@ -926,7 +926,7 @@ impl VRDisplay {
/// Initialize XRInputSources
fn initialize_inputs(&self) {
if self.initialized_inputs.get() {
return
return;
}
self.initialized_inputs.set(true);

@@ -955,6 +955,15 @@ impl VRDisplay {
Err(_) => {},
}
}

pub fn get_input_sources(&self) -> Vec<DomRoot<XRInputSource>> {
self.initialize_inputs();
self.input_sources
.borrow()
.iter()
.map(|(_, x)| DomRoot::from_ref(&**x))
.collect()
}
}

// WebVR Spec: If the number of values in the leftBounds/rightBounds arrays
@@ -25,7 +25,10 @@ interface XRSession : EventTarget {
// // Methods
Promise<XRReferenceSpace> requestReferenceSpace(XRReferenceSpaceOptions options);

// workaround until we have FrozenArray
// see https://github.com/servo/servo/issues/10427#issuecomment-449593626
// FrozenArray<XRInputSource> getInputSources();
sequence<XRInputSource> getInputSources();

Promise<void> updateRenderState(optional XRRenderStateInit state);
long requestAnimationFrame(XRFrameRequestCallback callback);
@@ -19,6 +19,7 @@ use crate::dom::eventtarget::EventTarget;
use crate::dom::globalscope::GlobalScope;
use crate::dom::promise::Promise;
use crate::dom::vrdisplay::VRDisplay;
use crate::dom::xrinputsource::XRInputSource;
use crate::dom::xrlayer::XRLayer;
use crate::dom::xrreferencespace::XRReferenceSpace;
use crate::dom::xrrenderstate::XRRenderState;
@@ -153,4 +154,9 @@ impl XRSessionMethods for XRSession {

p
}

/// https://immersive-web.github.io/webxr/#dom-xrsession-getinputsources
fn GetInputSources(&self) -> Vec<DomRoot<XRInputSource>> {
self.display.get_input_sources()
}
}

0 comments on commit 5c8132c

Please sign in to comment.
You can’t perform that action at this time.