Skip to content

Commit 50a7852

Browse files
committed
Stop polling in event loop on RedrawRequest::NextFrame
1 parent e772e5a commit 50a7852

3 files changed

Lines changed: 8 additions & 13 deletions

File tree

examples/loading_spinners/src/circular.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,6 @@ where
275275
shell: &mut Shell<'_, Message>,
276276
_viewport: &Rectangle,
277277
) -> event::Status {
278-
const FRAME_RATE: u64 = 60;
279-
280278
let state = tree.state.downcast_mut::<State>();
281279

282280
if let Event::Window(_, window::Event::RedrawRequested(now)) = event {
@@ -287,9 +285,7 @@ where
287285
);
288286

289287
state.cache.clear();
290-
shell.request_redraw(RedrawRequest::At(
291-
now + Duration::from_millis(1000 / FRAME_RATE),
292-
));
288+
shell.request_redraw(RedrawRequest::NextFrame);
293289
}
294290

295291
event::Status::Ignored

examples/loading_spinners/src/linear.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,16 +196,12 @@ where
196196
shell: &mut Shell<'_, Message>,
197197
_viewport: &Rectangle,
198198
) -> event::Status {
199-
const FRAME_RATE: u64 = 60;
200-
201199
let state = tree.state.downcast_mut::<State>();
202200

203201
if let Event::Window(_, window::Event::RedrawRequested(now)) = event {
204202
*state = state.timed_transition(self.cycle_duration, now);
205203

206-
shell.request_redraw(RedrawRequest::At(
207-
now + Duration::from_millis(1000 / FRAME_RATE),
208-
));
204+
shell.request_redraw(RedrawRequest::NextFrame);
209205
}
210206

211207
event::Status::Ignored

winit/src/application.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,6 @@ async fn run_instance<A, E, C>(
314314
match event {
315315
event::Event::NewEvents(
316316
event::StartCause::Init
317-
| event::StartCause::Poll
318317
| event::StartCause::ResumeTimeReached { .. },
319318
) if !redraw_pending => {
320319
window.request_redraw();
@@ -387,7 +386,11 @@ async fn run_instance<A, E, C>(
387386
user_interface::State::Updated {
388387
redraw_request: Some(redraw_request),
389388
} => match redraw_request {
390-
window::RedrawRequest::NextFrame => ControlFlow::Poll,
389+
window::RedrawRequest::NextFrame => {
390+
window.request_redraw();
391+
392+
ControlFlow::Wait
393+
}
391394
window::RedrawRequest::At(at) => {
392395
ControlFlow::WaitUntil(at)
393396
}
@@ -469,7 +472,7 @@ async fn run_instance<A, E, C>(
469472
_ => {}
470473
}
471474

472-
if !redraw_pending && events.is_empty() && messages.is_empty() {
475+
if events.is_empty() && messages.is_empty() {
473476
continue;
474477
}
475478

0 commit comments

Comments
 (0)