在持续的键盘输入下,窗口停止呈现数秒钟(WM_PAINT 饥饿; dispatch_key_event 绘制而不呈现)
作者: railapex创建于 2026年7月22日更新于 2026年9月17日
标签platform:windowsarea:gpui.contrib/zed team onlyreach:some usersseverity:S3
在 Windows 上的任何 gpui 应用程序,如果实体在用户按下键盘按键时以 ~10–20Hz 的速度调用 `cx.notify()`,则会出现此挂起错误。在我们的情况下,PTY 输出以 ~20 个块/秒的速度在多个终端实体之间通知,每个通知都发送到 UI 线程,此时消息队列永远不会空闲,因此 `WM_PAINT` 也永远不会被合成。每个通知都会使窗口变脏;下一个按键事件的分发会绘制它并清除标记;帧完成并从未显示。释放键 → 队列排空 → `WM_PAINT` 触发 → 显示 → 窗口立即“赶上”即时输入。
内容来源: zed-industries/zed