summaryrefslogtreecommitdiffstats
path: root/winit
diff options
context:
space:
mode:
authorLibravatar Billy Messenger <BillyDM@protonmail.com>2020-12-16 10:03:51 -0600
committerLibravatar Billy Messenger <BillyDM@protonmail.com>2020-12-16 10:03:51 -0600
commit4e391013c8bf8544fb766bee5dbae10cfdbc9d93 (patch)
tree5272b3d3588a01913854ce4b6e88380909a2a062 /winit
parenta42b3c6998274e75fd10f5ff3cecbdb37b9e3895 (diff)
downloadiced-4e391013c8bf8544fb766bee5dbae10cfdbc9d93.tar.gz
iced-4e391013c8bf8544fb766bee5dbae10cfdbc9d93.tar.bz2
iced-4e391013c8bf8544fb766bee5dbae10cfdbc9d93.zip
don't panic when swapchain frame is outdated
Diffstat (limited to 'winit')
-rw-r--r--winit/src/application.rs25
1 files changed, 15 insertions, 10 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs
index d1a94864..f19526cb 100644
--- a/winit/src/application.rs
+++ b/winit/src/application.rs
@@ -311,27 +311,32 @@ async fn run_instance<A, E, C>(
viewport_version = current_viewport_version;
}
- let new_mouse_interaction = compositor.draw(
+ if let Ok(new_mouse_interaction) = compositor.draw(
&mut renderer,
&mut swap_chain,
state.viewport(),
state.background_color(),
&primitive,
&debug.overlay(),
- );
+ ) {
+ debug.render_finished();
- debug.render_finished();
+ if new_mouse_interaction != mouse_interaction {
+ window.set_cursor_icon(conversion::mouse_interaction(
+ new_mouse_interaction,
+ ));
- if new_mouse_interaction != mouse_interaction {
- window.set_cursor_icon(conversion::mouse_interaction(
- new_mouse_interaction,
- ));
-
- mouse_interaction = new_mouse_interaction;
- }
+ mouse_interaction = new_mouse_interaction;
+ }
// TODO: Handle animations!
// Maybe we can use `ControlFlow::WaitUntil` for this.
+ } else {
+ debug.render_finished();
+
+ // Rendering could not complete, try again next frame.
+ window.request_redraw();
+ }
}
event::Event::WindowEvent {
event: window_event,