mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
servoshell: Enable OpenXR by default and remove old WebVR prefs, adjust XrDiscovery initialization (#33245)
* Remove WebVR prefs, enable OpenXR by default Signed-off-by: Daniel Adams <msub2official@gmail.com> * Prefer OpenXR if available, otherwise use GLWindow Signed-off-by: Daniel Adams <msub2official@gmail.com> --------- Signed-off-by: Daniel Adams <msub2official@gmail.com>
This commit is contained in:
parent
1aff31fd96
commit
5ffdce9aee
2 changed files with 29 additions and 25 deletions
|
@ -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<WakerEvent>,
|
||||
&'static EventLoopWindowTarget<WakerEvent>,
|
||||
>(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<WakerEvent>,
|
||||
&'static EventLoopWindowTarget<WakerEvent>,
|
||||
>(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));
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue