Skip to content

Commit a0b2bb3

Browse files
committed
Add StartCause::Init support, timer example
1 parent 02f922f commit a0b2bb3

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

examples/timer.rs

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
extern crate winit;
2+
use std::time::{Duration, Instant};
3+
4+
fn main() {
5+
let events_loop = winit::EventLoop::new();
6+
7+
let _window = winit::WindowBuilder::new()
8+
.with_title("A fantastic window!")
9+
.build(&events_loop)
10+
.unwrap();
11+
12+
events_loop.run(move |event, _, control_flow| {
13+
println!("{:?}", event);
14+
15+
match event {
16+
winit::Event::NewEvents(winit::StartCause::Init) =>
17+
*control_flow = winit::ControlFlow::WaitTimeout(Duration::new(1, 0)),
18+
winit::Event::NewEvents(winit::StartCause::TimeoutExpired{..}) => {
19+
*control_flow = winit::ControlFlow::WaitTimeout(Duration::new(1, 0));
20+
println!("\nTimer\n");
21+
},
22+
winit::Event::NewEvents(winit::StartCause::WaitCancelled{start, requested_duration}) => {
23+
println!("{:?}", Instant::now() - start);
24+
*control_flow = winit::ControlFlow::WaitTimeout(requested_duration.unwrap().checked_sub(Instant::now() - start).unwrap_or(Duration::new(0, 0)));
25+
}
26+
winit::Event::WindowEvent {
27+
event: winit::WindowEvent::CloseRequested,
28+
..
29+
} => *control_flow = winit::ControlFlow::Exit,
30+
_ => ()
31+
}
32+
});
33+
}

src/platform/windows/events_loop.rs

+1
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ impl EventLoop {
172172

173173
let mut msg = mem::uninitialized();
174174

175+
event_handler(Event::NewEvents(StartCause::Init), &event_loop, &mut control_flow);
175176
'main: loop {
176177
macro_rules! call_event_handler {
177178
($event:expr) => {{

0 commit comments

Comments
 (0)