From 57b553de2f0f2974bf20dfef2bd71b0a466e00e2 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 2 Feb 2025 02:28:04 +0100 Subject: Fix infinite runtime loop when queue redraws at a specific time --- winit/src/program.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'winit') diff --git a/winit/src/program.rs b/winit/src/program.rs index 5387e5e5..d8436212 100644 --- a/winit/src/program.rs +++ b/winit/src/program.rs @@ -737,6 +737,17 @@ async fn run_instance( } } } + + if let Some(redraw_at) = window_manager.redraw_at() { + let _ = + control_sender.start_send(Control::ChangeFlow( + ControlFlow::WaitUntil(redraw_at), + )); + } else { + let _ = control_sender.start_send( + Control::ChangeFlow(ControlFlow::Wait), + ); + } } event::Event::PlatformSpecific( event::PlatformSpecific::MacOS( @@ -868,6 +879,7 @@ async fn run_instance( match redraw_request { window::RedrawRequest::NextFrame => { window.raw.request_redraw(); + window.redraw_at = None; } window::RedrawRequest::At(at) => { window.redraw_at = Some(at); @@ -1028,6 +1040,7 @@ async fn run_instance( } => match redraw_request { window::RedrawRequest::NextFrame => { window.raw.request_redraw(); + window.redraw_at = None; } window::RedrawRequest::At(at) => { window.redraw_at = Some(at); -- cgit