summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-12-20 08:56:57 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-12-20 08:56:57 +0100
commit50a7852cb857cd110077ffce492bafe9ebe8786c (patch)
tree365364897a1f97c49102b17aabbe6b5936729acb
parente772e5a9e90b5d8ae12a9891cb7b848d81e63239 (diff)
downloadiced-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.rs6
-rw-r--r--examples/loading_spinners/src/linear.rs6
-rw-r--r--winit/src/application.rs9
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;
}