fix openvr panic in case of unknown event
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -3965,7 +3965,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ovr_overlay"
|
name = "ovr_overlay"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
source = "git+https://github.com/galister/ovr_overlay_oyasumi?rev=3cfe4930accad9cf38cd9784bf78505584de4cd8#3cfe4930accad9cf38cd9784bf78505584de4cd8"
|
source = "git+https://github.com/galister/ovr_overlay_oyasumi?rev=8d62c73d5f17e4210d6d0cd52e7f3953eb9b481a#8d62c73d5f17e4210d6d0cd52e7f3953eb9b481a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"derive_more",
|
"derive_more",
|
||||||
@@ -3980,7 +3980,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ovr_overlay_sys"
|
name = "ovr_overlay_sys"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
source = "git+https://github.com/galister/ovr_overlay_oyasumi?rev=3cfe4930accad9cf38cd9784bf78505584de4cd8#3cfe4930accad9cf38cd9784bf78505584de4cd8"
|
source = "git+https://github.com/galister/ovr_overlay_oyasumi?rev=8d62c73d5f17e4210d6d0cd52e7f3953eb9b481a#8d62c73d5f17e4210d6d0cd52e7f3953eb9b481a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocxx",
|
"autocxx",
|
||||||
"autocxx-build",
|
"autocxx-build",
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ openxr = { git = "https://github.com/Ralith/openxrs", rev = "d0afdd3365bc1e14de2
|
|||||||
ovr_overlay = { features = [
|
ovr_overlay = { features = [
|
||||||
"ovr_input",
|
"ovr_input",
|
||||||
"ovr_system",
|
"ovr_system",
|
||||||
], git = "https://github.com/galister/ovr_overlay_oyasumi", rev = "3cfe4930accad9cf38cd9784bf78505584de4cd8", optional = true }
|
], git = "https://github.com/galister/ovr_overlay_oyasumi", rev = "8d62c73d5f17e4210d6d0cd52e7f3953eb9b481a", optional = true }
|
||||||
regex = { workspace = true }
|
regex = { workspace = true }
|
||||||
rodio = { version = "0.21.1", default-features = false, features = [
|
rodio = { version = "0.21.1", default-features = false, features = [
|
||||||
"playback",
|
"playback",
|
||||||
|
|||||||
@@ -157,24 +157,37 @@ pub fn openvr_run(show_by_default: bool, headless: bool) -> Result<(), BackendEr
|
|||||||
}
|
}
|
||||||
FRAME_COUNTER.fetch_add(1, Ordering::Relaxed);
|
FRAME_COUNTER.fetch_add(1, Ordering::Relaxed);
|
||||||
|
|
||||||
|
// extremely cursed
|
||||||
|
const VREVENT_QUIT: u32 = EVREventType::VREvent_Quit as u32;
|
||||||
|
const VREVENT_TRACKED_ACTIVATED: u32 = EVREventType::VREvent_TrackedDeviceActivated as u32;
|
||||||
|
const VREVENT_TRACKED_DEACTIVATED: u32 =
|
||||||
|
EVREventType::VREvent_TrackedDeviceDeactivated as u32;
|
||||||
|
const VREVENT_TRACKED_UPDATED: u32 = EVREventType::VREvent_TrackedDeviceUpdated as u32;
|
||||||
|
const VREVENT_SEATED_ZERO: u32 = EVREventType::VREvent_SeatedZeroPoseReset as u32;
|
||||||
|
const VREVENT_STANDING_ZERO: u32 = EVREventType::VREvent_StandingZeroPoseReset as u32;
|
||||||
|
const VREVENT_CHAPERONE_CHANGED: u32 =
|
||||||
|
EVREventType::VREvent_ChaperoneUniverseHasChanged as u32;
|
||||||
|
const VREVENT_SCENE_APP_CHANGED: u32 = EVREventType::VREvent_SceneApplicationChanged as u32;
|
||||||
|
const VREVENT_IPD_CHANGED: u32 = EVREventType::VREvent_IpdChanged as u32;
|
||||||
|
|
||||||
while let Some(event) = system_mgr.poll_next_event() {
|
while let Some(event) = system_mgr.poll_next_event() {
|
||||||
match event.event_type {
|
match event.event_type {
|
||||||
EVREventType::VREvent_Quit => {
|
VREVENT_QUIT => {
|
||||||
log::warn!("Received quit event, shutting down.");
|
log::warn!("Received quit event, shutting down.");
|
||||||
break 'main_loop;
|
break 'main_loop;
|
||||||
}
|
}
|
||||||
EVREventType::VREvent_TrackedDeviceActivated
|
VREVENT_TRACKED_ACTIVATED
|
||||||
| EVREventType::VREvent_TrackedDeviceDeactivated
|
| VREVENT_TRACKED_DEACTIVATED
|
||||||
| EVREventType::VREvent_TrackedDeviceUpdated => {
|
| VREVENT_TRACKED_UPDATED => {
|
||||||
next_device_update = Instant::now();
|
next_device_update = Instant::now();
|
||||||
}
|
}
|
||||||
EVREventType::VREvent_SeatedZeroPoseReset
|
VREVENT_SEATED_ZERO
|
||||||
| EVREventType::VREvent_StandingZeroPoseReset
|
| VREVENT_STANDING_ZERO
|
||||||
| EVREventType::VREvent_ChaperoneUniverseHasChanged
|
| VREVENT_CHAPERONE_CHANGED
|
||||||
| EVREventType::VREvent_SceneApplicationChanged => {
|
| VREVENT_SCENE_APP_CHANGED => {
|
||||||
playspace.playspace_changed(&mut compositor_mgr, &mut chaperone_mgr);
|
playspace.playspace_changed(&mut compositor_mgr, &mut chaperone_mgr);
|
||||||
}
|
}
|
||||||
EVREventType::VREvent_IpdChanged => {
|
VREVENT_IPD_CHANGED => {
|
||||||
if let Ok(ipd) = system_mgr.get_tracked_device_property::<f32>(
|
if let Ok(ipd) = system_mgr.get_tracked_device_property::<f32>(
|
||||||
TrackedDeviceIndex::HMD,
|
TrackedDeviceIndex::HMD,
|
||||||
ETrackedDeviceProperty::Prop_UserIpdMeters_Float,
|
ETrackedDeviceProperty::Prop_UserIpdMeters_Float,
|
||||||
|
|||||||
Reference in New Issue
Block a user