diff --git a/wayvr/src/backend/openxr/mod.rs b/wayvr/src/backend/openxr/mod.rs index 3b686d3c..06ca9747 100644 --- a/wayvr/src/backend/openxr/mod.rs +++ b/wayvr/src/backend/openxr/mod.rs @@ -95,6 +95,11 @@ pub fn openxr_run( app.monado_state_init(); let mut space_mover = playspace::PlayspaceMover::new(); + if let Some(m) = app.monado_state.as_mut() { + // Test whether current playspace offset can be queried and log an error if it fails. + // `space_mover` can be used regardless and will start working if the playspace offset becomes available later. + space_mover.test_availability(&mut m.ipc); + }; let mut blocker = app .monado_state diff --git a/wayvr/src/backend/openxr/playspace.rs b/wayvr/src/backend/openxr/playspace.rs index 0be7b76e..3d9e3119 100644 --- a/wayvr/src/backend/openxr/playspace.rs +++ b/wayvr/src/backend/openxr/playspace.rs @@ -244,6 +244,12 @@ impl PlayspaceMover { .set_reference_space_offset(ReferenceSpaceType::Stage, pose) .inspect_err(|e| log::warn!("Could not fix floor due to libmonado error: {e:?}")); } + + pub fn test_availability(&mut self, monado: &mut Monado) { + let _ = monado + .get_reference_space_offset(ReferenceSpaceType::Stage) + .log_err("Space drag may not be available"); + } } fn get_offset(monado: &mut Monado) -> Result {