diff --git a/ports/servoshell/desktop/app.rs b/ports/servoshell/desktop/app.rs index 7420bd4035e..528ee96ba01 100644 --- a/ports/servoshell/desktop/app.rs +++ b/ports/servoshell/desktop/app.rs @@ -141,27 +141,7 @@ impl App { if let winit::event::Event::NewEvents(winit::event::StartCause::Init) = event { let surfman = window.rendering_context(); - let xr_discovery = if pref!(dom.webxr.glwindow.enabled) && !opts::get().headless { - let window = window.clone(); - // This should be safe because run_forever does, in fact, - // run forever. The event loop window target doesn't get - // moved, and does outlast this closure, and we won't - // ever try to make use of it once shutdown begins and - // it stops being valid. - let w = unsafe { - std::mem::transmute::< - &EventLoopWindowTarget, - &'static EventLoopWindowTarget, - >(w.unwrap()) - }; - let factory = Box::new(move || Ok(window.new_glwindow(w))); - Some(XrDiscovery::GlWindow(GlWindowDiscovery::new( - surfman.connection(), - surfman.adapter(), - surfman.context_attributes(), - factory, - ))) - } else if pref!(dom.webxr.openxr.enabled) && !opts::get().headless { + let openxr_discovery = if pref!(dom.webxr.openxr.enabled) && !opts::get().headless { #[cfg(target_os = "windows")] let openxr = { let app_info = AppInfo::new("Servoshell", 0, "Servo", 0); @@ -175,6 +155,33 @@ impl App { None }; + let glwindow_discovery = + if pref!(dom.webxr.glwindow.enabled) && !opts::get().headless { + let window = window.clone(); + // This should be safe because run_forever does, in fact, + // run forever. The event loop window target doesn't get + // moved, and does outlast this closure, and we won't + // ever try to make use of it once shutdown begins and + // it stops being valid. + let w = unsafe { + std::mem::transmute::< + &EventLoopWindowTarget, + &'static EventLoopWindowTarget, + >(w.unwrap()) + }; + let factory = Box::new(move || Ok(window.new_glwindow(w))); + Some(XrDiscovery::GlWindow(GlWindowDiscovery::new( + surfman.connection(), + surfman.adapter(), + surfman.context_attributes(), + factory, + ))) + } else { + None + }; + + let xr_discovery = openxr_discovery.or(glwindow_discovery); + let window = window.clone(); // Implements embedder methods, used by libservo and constellation. let embedder = Box::new(EmbedderCallbacks::new(ev_waker.clone(), xr_discovery)); diff --git a/resources/prefs.json b/resources/prefs.json index e63ab646586..5b9f2cd3124 100644 --- a/resources/prefs.json +++ b/resources/prefs.json @@ -37,9 +37,6 @@ "dom.webgpu.wgpu_backend": "", "dom.webrtc.enabled": false, "dom.webrtc.transceiver.enabled": false, - "dom.webvr.enabled": false, - "dom.webvr.event_polling_interval": 500, - "dom.webvr.test": false, "dom.webvtt.enabled": false, "dom.webxr.enabled": true, "dom.webxr.first_person_observer_view": false, @@ -50,7 +47,7 @@ "dom.webxr.glwindow.spherical": false, "dom.webxr.hands.enabled": true, "dom.webxr.layers.enabled": false, - "dom.webxr.openxr.enabled": false, + "dom.webxr.openxr.enabled": true, "dom.webxr.sessionavailable": false, "dom.webxr.test": false, "dom.webxr.unsafe-assume-user-intent": false,