mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Report openxr failure at app startup.
This commit is contained in:
parent
0540c4a284
commit
2a0700e78b
3 changed files with 26 additions and 10 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -6419,7 +6419,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webxr"
|
name = "webxr"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
source = "git+https://github.com/servo/webxr#836a08e1168e3a2b0b0fa12d7987603d5fc79002"
|
source = "git+https://github.com/servo/webxr#6ead41b15b0c72ef8bd98af0c09f4fefec888aac"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"android_injected_glue",
|
"android_injected_glue",
|
||||||
"bindgen",
|
"bindgen",
|
||||||
|
@ -6442,7 +6442,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webxr-api"
|
name = "webxr-api"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
source = "git+https://github.com/servo/webxr#836a08e1168e3a2b0b0fa12d7987603d5fc79002"
|
source = "git+https://github.com/servo/webxr#6ead41b15b0c72ef8bd98af0c09f4fefec888aac"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"euclid",
|
"euclid",
|
||||||
"ipc-channel",
|
"ipc-channel",
|
||||||
|
|
|
@ -267,7 +267,8 @@ impl XRSystem {
|
||||||
) {
|
) {
|
||||||
let session = match response {
|
let session = match response {
|
||||||
Ok(session) => session,
|
Ok(session) => session,
|
||||||
Err(_) => {
|
Err(e) => {
|
||||||
|
warn!("Error requesting XR session: {:?}", e);
|
||||||
if mode != XRSessionMode::Inline {
|
if mode != XRSessionMode::Inline {
|
||||||
self.pending_immersive_session.set(false);
|
self.pending_immersive_session.set(false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -810,7 +810,7 @@ impl EmbedderMethods for ServoEmbedderCallbacks {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct GlThread(WebGlExecutor);
|
struct GlThread(WebGlExecutor);
|
||||||
impl webxr::openxr::GlThread for GlThread {
|
impl openxr::GlThread for GlThread {
|
||||||
fn execute(&self, runnable: Box<dyn FnOnce(&surfman::Device) + Send>) {
|
fn execute(&self, runnable: Box<dyn FnOnce(&surfman::Device) + Send>) {
|
||||||
let _ = self.0.send(runnable);
|
let _ = self.0.send(runnable);
|
||||||
}
|
}
|
||||||
|
@ -819,12 +819,27 @@ impl EmbedderMethods for ServoEmbedderCallbacks {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let discovery = webxr::openxr::OpenXrDiscovery::new(
|
if openxr::create_instance().is_ok() {
|
||||||
Box::new(GlThread(executor)),
|
let discovery = openxr::OpenXrDiscovery::new(
|
||||||
Box::new(ProviderRegistration(surface_providers)),
|
Box::new(GlThread(executor)),
|
||||||
Box::new(ContextMenuCallback(embedder_proxy)),
|
Box::new(ProviderRegistration(surface_providers)),
|
||||||
);
|
Box::new(ContextMenuCallback(embedder_proxy)),
|
||||||
registry.register(discovery);
|
);
|
||||||
|
registry.register(discovery);
|
||||||
|
} else {
|
||||||
|
let msg =
|
||||||
|
"Cannot initialize OpenXR - please ensure runtime is installed and enabled in \
|
||||||
|
the OpenXR developer portal app.\n\nImmersive mode will not function until \
|
||||||
|
this error is fixed.";
|
||||||
|
let (sender, _receiver) = ipc::channel().unwrap();
|
||||||
|
embedder_proxy.send((
|
||||||
|
None,
|
||||||
|
EmbedderMsg::Prompt(
|
||||||
|
PromptDefinition::Alert(msg.to_owned(), sender),
|
||||||
|
PromptOrigin::Trusted,
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(feature = "uwp"))]
|
#[cfg(not(feature = "uwp"))]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue