// Copyright 2019 The ChromiumOS Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. use std::process::exit; #[cfg(any(target_os = "android", target_os = "linux"))] mod platform { use anyhow::Context; use anyhow::Result; use gpu_display::*; use vm_control::gpu::DisplayMode; use vm_control::gpu::DisplayParameters; pub fn run() -> Result<()> { let mut disp = GpuDisplay::open_wayland(None::<&str>).context("open_wayland")?; let surface_id = disp .create_surface( None, /* scanout_id= */ Some(0), &DisplayParameters::default_with_mode(DisplayMode::Windowed(1280, 1024)), SurfaceType::Scanout, ) .context("create_surface")?; disp.flip(surface_id); disp.commit(surface_id).context("commit")?; while !disp.close_requested(surface_id) { disp.dispatch_events().context("dispatch_events")?; } Ok(()) } } #[cfg(not(unix))] mod platform { use anyhow::anyhow; use anyhow::Result; pub fn run() -> Result<()> { Err(anyhow!("Only supported on unix targets")) } } fn main() { if let Err(e) = platform::run() { eprintln!("error: {:#}", e); exit(1); } }