Add StartCause::Init support, timer example

This commit is contained in:
Osspial
2018-08-17 17:49:46 -04:00
parent 02f922f003
commit a0b2bb3695
2 changed files with 34 additions and 0 deletions

33
examples/timer.rs Normal file
View File

@@ -0,0 +1,33 @@
extern crate winit;
use std::time::{Duration, Instant};
fn main() {
let events_loop = winit::EventLoop::new();
let _window = winit::WindowBuilder::new()
.with_title("A fantastic window!")
.build(&events_loop)
.unwrap();
events_loop.run(move |event, _, control_flow| {
println!("{:?}", event);
match event {
winit::Event::NewEvents(winit::StartCause::Init) =>
*control_flow = winit::ControlFlow::WaitTimeout(Duration::new(1, 0)),
winit::Event::NewEvents(winit::StartCause::TimeoutExpired{..}) => {
*control_flow = winit::ControlFlow::WaitTimeout(Duration::new(1, 0));
println!("\nTimer\n");
},
winit::Event::NewEvents(winit::StartCause::WaitCancelled{start, requested_duration}) => {
println!("{:?}", Instant::now() - start);
*control_flow = winit::ControlFlow::WaitTimeout(requested_duration.unwrap().checked_sub(Instant::now() - start).unwrap_or(Duration::new(0, 0)));
}
winit::Event::WindowEvent {
event: winit::WindowEvent::CloseRequested,
..
} => *control_flow = winit::ControlFlow::Exit,
_ => ()
}
});
}