diff options
author | 2020-12-16 10:03:51 -0600 | |
---|---|---|
committer | 2020-12-16 10:03:51 -0600 | |
commit | 4e391013c8bf8544fb766bee5dbae10cfdbc9d93 (patch) | |
tree | 5272b3d3588a01913854ce4b6e88380909a2a062 /winit | |
parent | a42b3c6998274e75fd10f5ff3cecbdb37b9e3895 (diff) | |
download | iced-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.rs | 25 |
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, |