aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xrwebgllayer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/xrwebgllayer.rs')
-rw-r--r--components/script/dom/xrwebgllayer.rs18
1 files changed, 14 insertions, 4 deletions
diff --git a/components/script/dom/xrwebgllayer.rs b/components/script/dom/xrwebgllayer.rs
index a2a7c93f37c..a5f06df0e52 100644
--- a/components/script/dom/xrwebgllayer.rs
+++ b/components/script/dom/xrwebgllayer.rs
@@ -10,14 +10,13 @@ use crate::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGL
use crate::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
use crate::dom::bindings::error::Error;
use crate::dom::bindings::error::Fallible;
-use crate::dom::bindings::reflector::{reflect_dom_object, DomObject};
+use crate::dom::bindings::reflector::{reflect_dom_object, Reflector, DomObject};
use crate::dom::bindings::root::{Dom, DomRoot};
use crate::dom::globalscope::GlobalScope;
use crate::dom::webgl_validations::types::TexImageTarget;
use crate::dom::webglframebuffer::WebGLFramebuffer;
use crate::dom::webglrenderingcontext::WebGLRenderingContext;
use crate::dom::window::Window;
-use crate::dom::xrlayer::XRLayer;
use crate::dom::xrsession::XRSession;
use crate::dom::xrview::XRView;
use crate::dom::xrviewport::XRViewport;
@@ -28,7 +27,7 @@ use webxr_api::Views;
#[dom_struct]
pub struct XRWebGLLayer {
- xrlayer: XRLayer,
+ reflector_: Reflector,
antialias: bool,
depth: bool,
stencil: bool,
@@ -46,7 +45,7 @@ impl XRWebGLLayer {
framebuffer: &WebGLFramebuffer,
) -> XRWebGLLayer {
XRWebGLLayer {
- xrlayer: XRLayer::new_inherited(),
+ reflector_: Reflector::new(),
antialias: init.antialias,
depth: init.depth,
stencil: init.stencil,
@@ -83,6 +82,13 @@ impl XRWebGLLayer {
context: &WebGLRenderingContext,
init: &XRWebGLLayerInit,
) -> Fallible<DomRoot<Self>> {
+ // Step 2
+ if session.is_ended() {
+ return Err(Error::InvalidState);
+ }
+ // XXXManishearth step 3: throw error if context is lost
+ // XXXManishearth step 4: check XR compat flag for immersive sessions
+
let cx = global.get_cx();
let old_fbo = context.bound_framebuffer();
let old_texture = context
@@ -139,6 +145,10 @@ impl XRWebGLLayer {
&framebuffer,
))
}
+
+ pub fn session(&self) -> &XRSession {
+ &self.session
+ }
}
impl XRWebGLLayerMethods for XRWebGLLayer {