diff --git a/winit/src/lib.rs b/winit/src/lib.rs index 8b161aab..92007e56 100644 --- a/winit/src/lib.rs +++ b/winit/src/lib.rs @@ -842,7 +842,7 @@ async fn run_instance

( .expect("Get user interface"); let interact_span = debug::interact(id); - let mut change_count = 0; + let mut redraw_count = 0; let state = loop { let message_count = messages.len(); @@ -854,23 +854,23 @@ async fn run_instance

( &mut messages, ); - change_count += 1; - if message_count == messages.len() && !state.has_layout_changed() { break state; } - if change_count >= 10 { + if redraw_count >= 2 { log::warn!( - "More than 10 consecutive RedrawRequested events \ + "More than 3 consecutive RedrawRequested events \ produced layout invalidation" ); break state; } + redraw_count += 1; + if !messages.is_empty() { let caches: FxHashMap<_, _> = ManuallyDrop::into_inner(user_interfaces)