#[cfg(target_os = "linux")]
pub fn supports_fifo_v1() -> bool {
use wayland_client::{
Connection, Dispatch, QueueHandle,
globals::{GlobalListContents, registry_queue_init},
protocol::wl_registry,
};
struct Probe;
impl Dispatch<wl_registry::WlRegistry, GlobalListContents> for Probe {
fn event(
_: &mut Self,
_: &wl_registry::WlRegistry,
_: wl_registry::Event,
_: &GlobalListContents,
_: &Connection,
_: &QueueHandle<Self>,
) {
}
}
let Ok(conn) = Connection::connect_to_env() else {
return false;
};
let Ok((globals, _queue)) = registry_queue_init::<Probe>(&conn) else {
return false;
};
globals
.contents()
.with_list(|list| list.iter().any(|g| g.interface == "wp_fifo_manager_v1"))
}
#[cfg(not(target_os = "linux"))]
pub fn supports_fifo_v1() -> bool {
false
}
pub fn preferred_vpx_driver(session: Option<&str>) -> Option<&'static str> {
match session {
Some("wayland") if supports_fifo_v1() => Some("wayland"),
Some("wayland") => Some("x11"),
Some("x11") => Some("x11"),
_ => None,
}
}