winit/src/platform_impl/web/event_loop/state.rs

38 lines
790 B
Rust
Raw Normal View History

2019-06-25 03:15:34 +02:00
use super::backend;
use crate::event_loop::ControlFlow;
2023-06-01 17:22:28 +02:00
use web_time::Instant;
2019-06-25 03:15:34 +02:00
#[derive(Debug)]
2019-06-25 03:15:34 +02:00
pub enum State {
Init,
WaitUntil {
timeout: backend::Schedule,
2019-06-25 03:15:34 +02:00
start: Instant,
end: Instant,
},
Wait {
start: Instant,
},
Poll {
request: backend::Schedule,
2019-06-25 03:15:34 +02:00
},
Exit,
}
impl State {
pub fn is_exit(&self) -> bool {
2022-06-10 13:43:33 +03:00
matches!(self, State::Exit)
2019-06-25 03:15:34 +02:00
}
pub fn control_flow(&self) -> ControlFlow {
match self {
2019-06-25 03:15:34 +02:00
State::Init => ControlFlow::Poll,
State::WaitUntil { end, .. } => ControlFlow::WaitUntil(*end),
2019-06-25 03:15:34 +02:00
State::Wait { .. } => ControlFlow::Wait,
State::Poll { .. } => ControlFlow::Poll,
State::Exit => ControlFlow::Exit,
}
}
}