From bc29931434a6c6c445f382fce9731311ebfbbf7f Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Sat, 15 Feb 2020 19:38:29 +0100 Subject: [PATCH] Add an example that calls request_redraw() from a thread (#1467) reproduces https://github.com/rust-windowing/winit/issues/1466 --- examples/request_redraw_threaded.rs | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 examples/request_redraw_threaded.rs diff --git a/examples/request_redraw_threaded.rs b/examples/request_redraw_threaded.rs new file mode 100644 index 00000000..341612ca --- /dev/null +++ b/examples/request_redraw_threaded.rs @@ -0,0 +1,39 @@ +use std::{thread, time}; + +use winit::{ + event::{Event, WindowEvent}, + event_loop::{ControlFlow, EventLoop}, + window::WindowBuilder, +}; + +fn main() { + simple_logger::init().unwrap(); + let event_loop = EventLoop::new(); + + let window = WindowBuilder::new() + .with_title("A fantastic window!") + .build(&event_loop) + .unwrap(); + + thread::spawn(move || loop { + thread::sleep(time::Duration::from_secs(1)); + window.request_redraw(); + }); + + event_loop.run(move |event, _, control_flow| { + println!("{:?}", event); + + *control_flow = ControlFlow::Wait; + + match event { + Event::WindowEvent { event, .. } => match event { + WindowEvent::CloseRequested => *control_flow = ControlFlow::Exit, + _ => (), + }, + Event::RedrawRequested(_) => { + println!("\nredrawing!\n"); + } + _ => (), + } + }); +}