vm_control/sys/linux/
gpu.rs

1// Copyright 2022 The ChromiumOS Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use serde::Deserialize;
6use serde::Serialize;
7use serde_keyvalue::FromKeyValues;
8
9use crate::gpu::DisplayModeTrait;
10
11#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, FromKeyValues)]
12#[serde(rename_all = "snake_case")]
13pub enum UnixMouseMode {
14    /// Sends multi-touch events to the guest.
15    Touchscreen,
16}
17
18#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
19#[serde(rename_all = "snake_case")]
20pub enum UnixDisplayMode {
21    Windowed(u32, u32),
22}
23
24impl DisplayModeTrait for UnixDisplayMode {
25    fn get_window_size(&self) -> (u32, u32) {
26        match self {
27            Self::Windowed(width, height) => (*width, *height),
28        }
29    }
30
31    fn get_virtual_display_size(&self) -> (u32, u32) {
32        self.get_window_size()
33    }
34
35    fn get_virtual_display_size_4k_uhd(&self, _is_4k_uhd_enabled: bool) -> (u32, u32) {
36        self.get_virtual_display_size()
37    }
38}