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;