diff options
author | 2023-12-20 08:56:57 +0100 | |
---|---|---|
committer | 2023-12-20 08:56:57 +0100 | |
commit | 50a7852cb857cd110077ffce492bafe9ebe8786c (patch) | |
tree | 365364897a1f97c49102b17aabbe6b5936729acb | |
parent | e772e5a9e90b5d8ae12a9891cb7b848d81e63239 (diff) | |
download | iced-50a7852cb857cd110077ffce492bafe9ebe8786c.tar.gz iced-50a7852cb857cd110077ffce492bafe9ebe8786c.tar.bz2 iced-50a7852cb857cd110077ffce492bafe9ebe8786c.zip |
Stop polling in event loop on `RedrawRequest::NextFrame`
-rw-r--r-- | examples/loading_spinners/src/circular.rs | 6 | ||||
-rw-r--r-- | examples/loading_spinners/src/linear.rs | 6 | ||||
-rw-r--r-- | winit/src/application.rs | 9 |
3 files changed, 8 insertions, 13 deletions
diff --git a/examples/loading_spinners/src/circular.rs b/examples/loading_spinners/src/circular.rs index dca8046a..7996f970 100644 --- a/examples/loading_spinners/src/circular.rs +++ b/examples/loading_spinners/src/circular.rs @@ -275,8 +275,6 @@ where shell: &mut Shell<'_, Message>, _viewport: &Rectangle, ) -> event::Status { - const FRAME_RATE: u64 = 60; - let state = tree.state.downcast_mut::<State>(); if let Event::Window(_, window::Event::RedrawRequested(now)) = event { @@ -287,9 +285,7 @@ where ); state.cache.clear(); - shell.request_redraw(RedrawRequest::At( - now + Duration::from_millis(1000 / FRAME_RATE), - )); + shell.request_redraw(RedrawRequest::NextFrame); } event::Status::Ignored diff --git a/examples/loading_spinners/src/linear.rs b/examples/loading_spinners/src/linear.rs index db10bfba..becfd2c2 100644 --- a/examples/loading_spinners/src/linear.rs +++ b/examples/loading_spinners/src/linear.rs @@ -196,16 +196,12 @@ where shell: &mut Shell<'_, Message>, _viewport: &Rectangle, ) -> event::Status { - const FRAME_RATE: u64 = 60; - let state = tree.state.downcast_mut::<State>(); if let Event::Window(_, window::Event::RedrawRequested(now)) = event { *state = state.timed_transition(self.cycle_duration, now); - shell.request_redraw(RedrawRequest::At( - now + Duration::from_millis(1000 / FRAME_RATE), - )); + shell.request_redraw(RedrawRequest::NextFrame); } event::Status::Ignored diff --git a/winit/src/application.rs b/winit/src/application.rs index 75be08f1..5ff76060 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -314,7 +314,6 @@ async fn run_instance<A, E, C>( match event { event::Event::NewEvents( event::StartCause::Init - | event::StartCause::Poll | event::StartCause::ResumeTimeReached { .. }, ) if !redraw_pending => { window.request_redraw(); @@ -387,7 +386,11 @@ async fn run_instance<A, E, C>( user_interface::State::Updated { redraw_request: Some(redraw_request), } => match redraw_request { - window::RedrawRequest::NextFrame => ControlFlow::Poll, + window::RedrawRequest::NextFrame => { + window.request_redraw(); + + ControlFlow::Wait + } window::RedrawRequest::At(at) => { ControlFlow::WaitUntil(at) } @@ -469,7 +472,7 @@ async fn run_instance<A, E, C>( _ => {} } - if !redraw_pending && events.is_empty() && messages.is_empty() { + if events.is_empty() && messages.is_empty() { continue; } |