backend: Add a winit backend for testing

This commit is contained in:
Victoria Brekenfeld 2022-01-18 19:42:04 +01:00
parent 370c825c8e
commit c46f327384
5 changed files with 853 additions and 17 deletions

View file

@ -5,14 +5,27 @@ use anyhow::Result;
use smithay::reexports::calloop::EventLoop;
pub mod x11;
pub mod winit;
// TODO
// pub mod wayland; // tbd in smithay
// pub mod udev;
pub fn init_backend_auto(event_loop: &mut EventLoop<State>, state: &mut State) -> Result<()> {
if std::env::var_os("DISPLAY").is_some() {
x11::init_backend(event_loop, state)
} else {
unimplemented!("Currently this runs only nested")
match std::env::var("COSMIC_BACKEND") {
Ok(x) if x == "x11" => x11::init_backend(event_loop, state),
Ok(x) if x == "winit" => winit::init_backend(event_loop, state),
Ok(_) => unimplemented!("There is no backend with this identifier"),
Err(_) => if std::env::var_os("DISPLAY").is_some() || std::env::var_os("WAYLAND_DISPLAY").is_some() {
match x11::init_backend(event_loop, state) {
Ok(_) => Ok(()),
Err(err) => {
slog_scope::warn!("X11 Backend failed with error: {}", err);
slog_scope::info!("Falling back to winit backend.");
winit::init_backend(event_loop, state)
}
}
} else {
unimplemented!("Currently this runs only nested")
}
}
}