diff --git a/winit/src/program.rs b/winit/src/program.rs index efe8a978a9..57cef684ca 100644 --- a/winit/src/program.rs +++ b/winit/src/program.rs @@ -650,7 +650,7 @@ async fn run_instance
(
mut runtime: Runtime (
let Boot {
mut compositor,
mut clipboard,
- } = boot.try_recv().ok().flatten().expect("Receive boot");
+ } = boot.await.expect("Receive boot");
let mut window_manager = WindowManager::new();
let mut is_window_opening = !is_daemon;
@@ -679,7 +679,18 @@ async fn run_instance (
debug.startup_finished();
- while let Some(event) = event_receiver.next().await {
+ loop {
+ // Empty the queue if possible
+ let event = if let Ok(event) = event_receiver.try_next() {
+ event
+ } else {
+ event_receiver.next().await
+ };
+
+ let Some(event) = event else {
+ break;
+ };
+
match event {
Event::WindowCreated {
id,