From 7037740d46bded574e5fd50ca475fbbbd9f14b3d Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Sun, 9 Jun 2024 00:14:17 +0900 Subject: [PATCH] try harder to find libmonado --- src/backend/openxr/helpers.rs | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/backend/openxr/helpers.rs b/src/backend/openxr/helpers.rs index e3b295e..095c468 100644 --- a/src/backend/openxr/helpers.rs +++ b/src/backend/openxr/helpers.rs @@ -185,7 +185,8 @@ pub(super) fn find_libmonado() -> anyhow::Result { } } - const PROC_NAMES: [&str; 1] = ["monado-service"]; + const PROC_NAMES: [&str; 2] = ["monado-service", "wivrn-server"]; + let mut system = sysinfo::System::new(); system.refresh_processes(); for p in system.processes().values() { @@ -201,16 +202,20 @@ pub(super) fn find_libmonado() -> anyhow::Result { } fn proc_load_libmonado(proc: &Process) -> Option { - let path = proc - .exe()? - .parent()? - .parent()? - .join("lib") - .join("libmonado.so"); + // relative to folder containing binary + const SEARCH_PATHS: [&str; 3] = [ + "../lib/libmonado.so", + "../libmonado/libmonado.so", + "../_deps/monado-build/src/xrt/targets/libmonado/libmonado.so", + ]; - if path.exists() { - Some(unsafe { libloading::Library::new(path).ok()? }) - } else { - None + for &p in SEARCH_PATHS.iter() { + let path = proc.exe()?.parent()?.join(p); + + if path.exists() { + return Some(unsafe { libloading::Library::new(path).ok()? }); + } } + + None }