use crate::process::ProcessId; use crate::task::{TaskId, TaskState}; pub const DEFAULT_GAME_PAUSE_BUDGET_TICKS: u8 = 1; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum GameLifecycleEventKind { Pause, ResumeForeground, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct GameLifecycleEvent { pub task_id: TaskId, pub kind: GameLifecycleEventKind, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum LifecycleOperation { SetForeground, Suspend, Resume, Close, Crash, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum LifecycleError { TaskNotFound(TaskId), ProcessNotFound(ProcessId), InvalidTransition { task_id: TaskId, from: TaskState, operation: LifecycleOperation }, ResidentGameAlreadyExists { existing: TaskId, requested: TaskId }, ForegroundShellAlreadyExists { existing: TaskId, requested: TaskId }, TaskIsNotResidentGame(TaskId), }