From 37b05605e2a93bb9b251ca4a6d856febee115c30 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 12 Jan 2026 15:17:21 +0100 Subject: [PATCH] gpui(windows): Force a paint message when running out foreground budget (#46609) Release Notes: - Fixed zed no longer rendering on windows in a timely manner if it gets overloaded with foreground work Co-authored-by: John Tur --- crates/gpui/src/platform/windows/platform.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/gpui/src/platform/windows/platform.rs b/crates/gpui/src/platform/windows/platform.rs index c86e0478654254a8f89fc8ec02d0b1f6828cda78..6816a340a280bd794e0885868928b82fa6022bcd 100644 --- a/crates/gpui/src/platform/windows/platform.rs +++ b/crates/gpui/src/platform/windows/platform.rs @@ -845,6 +845,11 @@ impl WindowsPlatformInner { let peek_msg = |msg: &mut _, msg_kind| unsafe { PeekMessageW(msg, None, 0, 0, PM_REMOVE | msg_kind).as_bool() }; + // We need to process a paint message here as otherwise we will re-enter `run_foreground_task` before painting if we have work remaining. + // The reason for this is that windows prefers custom application message processing over system messages. + if peek_msg(&mut msg, PM_QS_PAINT) { + process_message(&msg); + } while peek_msg(&mut msg, PM_QS_INPUT) { process_message(&msg); }