1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2019 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker use std::process::exit; 6*bb4ee6a4SAndroid Build Coastguard Worker 7*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(any(target_os = "android", target_os = "linux"))] 8*bb4ee6a4SAndroid Build Coastguard Worker mod platform { 9*bb4ee6a4SAndroid Build Coastguard Worker use anyhow::Context; 10*bb4ee6a4SAndroid Build Coastguard Worker use anyhow::Result; 11*bb4ee6a4SAndroid Build Coastguard Worker use gpu_display::*; 12*bb4ee6a4SAndroid Build Coastguard Worker use vm_control::gpu::DisplayMode; 13*bb4ee6a4SAndroid Build Coastguard Worker use vm_control::gpu::DisplayParameters; 14*bb4ee6a4SAndroid Build Coastguard Worker run() -> Result<()>15*bb4ee6a4SAndroid Build Coastguard Worker pub fn run() -> Result<()> { 16*bb4ee6a4SAndroid Build Coastguard Worker let mut disp = GpuDisplay::open_wayland(None::<&str>).context("open_wayland")?; 17*bb4ee6a4SAndroid Build Coastguard Worker let surface_id = disp 18*bb4ee6a4SAndroid Build Coastguard Worker .create_surface( 19*bb4ee6a4SAndroid Build Coastguard Worker None, 20*bb4ee6a4SAndroid Build Coastguard Worker /* scanout_id= */ Some(0), 21*bb4ee6a4SAndroid Build Coastguard Worker &DisplayParameters::default_with_mode(DisplayMode::Windowed(1280, 1024)), 22*bb4ee6a4SAndroid Build Coastguard Worker SurfaceType::Scanout, 23*bb4ee6a4SAndroid Build Coastguard Worker ) 24*bb4ee6a4SAndroid Build Coastguard Worker .context("create_surface")?; 25*bb4ee6a4SAndroid Build Coastguard Worker disp.flip(surface_id); 26*bb4ee6a4SAndroid Build Coastguard Worker disp.commit(surface_id).context("commit")?; 27*bb4ee6a4SAndroid Build Coastguard Worker while !disp.close_requested(surface_id) { 28*bb4ee6a4SAndroid Build Coastguard Worker disp.dispatch_events().context("dispatch_events")?; 29*bb4ee6a4SAndroid Build Coastguard Worker } 30*bb4ee6a4SAndroid Build Coastguard Worker Ok(()) 31*bb4ee6a4SAndroid Build Coastguard Worker } 32*bb4ee6a4SAndroid Build Coastguard Worker } 33*bb4ee6a4SAndroid Build Coastguard Worker 34*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(not(unix))] 35*bb4ee6a4SAndroid Build Coastguard Worker mod platform { 36*bb4ee6a4SAndroid Build Coastguard Worker use anyhow::anyhow; 37*bb4ee6a4SAndroid Build Coastguard Worker use anyhow::Result; 38*bb4ee6a4SAndroid Build Coastguard Worker run() -> Result<()>39*bb4ee6a4SAndroid Build Coastguard Worker pub fn run() -> Result<()> { 40*bb4ee6a4SAndroid Build Coastguard Worker Err(anyhow!("Only supported on unix targets")) 41*bb4ee6a4SAndroid Build Coastguard Worker } 42*bb4ee6a4SAndroid Build Coastguard Worker } 43*bb4ee6a4SAndroid Build Coastguard Worker main()44*bb4ee6a4SAndroid Build Coastguard Workerfn main() { 45*bb4ee6a4SAndroid Build Coastguard Worker if let Err(e) = platform::run() { 46*bb4ee6a4SAndroid Build Coastguard Worker eprintln!("error: {:#}", e); 47*bb4ee6a4SAndroid Build Coastguard Worker exit(1); 48*bb4ee6a4SAndroid Build Coastguard Worker } 49*bb4ee6a4SAndroid Build Coastguard Worker } 50