INNER CODE UNIT · Rust

discover_gamescope_displays

ShadowBlip/OpenGamepadUI · extensions/core/src/gamescope.rs:175

fn discover_gamescope_displays() -> Result<Vec<String>, Box<dyn std::error::Error>> {
    let mut seen = HashSet::new();
    let displays = gamescope_x11_client::discover_x11_displays()?
        .into_iter()
        .filter(|display| seen.insert(display.clone()));

    let probes: Vec<(String, mpsc::Receiver<bool>)> = displays
        .map(|display| {
            let (tx, rx) = mpsc::sync_channel(1);
            let name = display.clone();
            thread::spawn(move || {
                let _ = tx.try_send(is_gamescope_display(&name));
            });
            (display, rx)
        })
        .collect();

    let deadline = Instant::now() + DISPLAY_PROBE_TIMEOUT;

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…