aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/xrsession.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/components/script/dom/xrsession.rs b/components/script/dom/xrsession.rs
index 3d4bbc7716b..dacfc373540 100644
--- a/components/script/dom/xrsession.rs
+++ b/components/script/dom/xrsession.rs
@@ -175,7 +175,7 @@ impl XRSession {
}
/// https://immersive-web.github.io/webxr/#xr-animation-frame
- fn raf_callback(&self, (time, frame): (f64, Frame)) {
+ fn raf_callback(&self, (time, mut frame): (f64, Frame)) {
// Step 1
if let Some(pending) = self.pending_render_state.take() {
// https://immersive-web.github.io/webxr/#apply-the-pending-render-state
@@ -200,6 +200,10 @@ impl XRSession {
}
}
+ for event in frame.events.drain(..) {
+ self.session.borrow_mut().apply_event(event)
+ }
+
// Step 2
let base_layer = match self.active_render_state.get().GetBaseLayer() {
Some(layer) => layer,
@@ -279,6 +283,12 @@ impl XRSessionMethods for XRSession {
if let Some(ref layer) = init.baseLayer {
pending.set_layer(Some(&layer))
}
+
+ if init.depthFar.is_some() || init.depthNear.is_some() {
+ self.session
+ .borrow_mut()
+ .update_clip_planes(*pending.DepthNear() as f32, *pending.DepthFar() as f32);
+ }
// XXXManishearth handle inlineVerticalFieldOfView
Ok(())
}