diff --git a/local/recipes/gpu/redox-drm/source/src/main.rs b/local/recipes/gpu/redox-drm/source/src/main.rs index fba81a3991..16c6017a06 100644 --- a/local/recipes/gpu/redox-drm/source/src/main.rs +++ b/local/recipes/gpu/redox-drm/source/src/main.rs @@ -59,6 +59,12 @@ fn init_logging(level: LevelFilter) { } fn run(daemon: daemon::Daemon) -> Result<()> { + if is_scheme_registered("drm") { + info!("redox-drm: scheme:drm already registered, another instance is active"); + daemon.ready(); + return Ok(()); + } + let info = select_gpu_from_args()?; verify_supported_gpu(&info)?; @@ -174,6 +180,10 @@ fn create_drm_socket() -> Result { .map_err(|e| DriverError::Initialization(format!("failed to register drm scheme: {e}"))) } +fn is_scheme_registered(name: &str) -> bool { + std::fs::read_dir(format!("/scheme/{}", name)).is_ok() +} + fn select_gpu_from_args() -> Result { let mut args = env::args().skip(1); let parsed = match (args.next(), args.next(), args.next()) {