zed/crates/gpui_linux/src/linux
Neel eb354c8d50
gpui: Make the Wayland render loop demand-driven (#60690)
Closes #55345.

Wayland is the only platform whose frame ticks are conditional: a
wl_surface frame callback only arrives after a commit the compositor
goes on to repaint.

GPUI assumed unconditional ticks (any previously our Wayland backend
faked them), so an idle fullscreen window
stopped receiving callbacks and froze until external damage arrived.

This PR makes the Wayland render loop demand-driven, instead parking
when there's nothing to draw, and stops Zed committing empty frames on
every tick as the artificial heartbeat from the compositor.

---

Release Notes:

- Fixed the UI freezing in fullscreen on some Wayland compositors
- Fixed idle windows waking at the display's refresh rate on Wayland

---------

Co-authored-by: Philipp Schaffrath <philipp.schaffrath@gmail.com>
Co-authored-by: Daan De Meyer <daan@amutable.com>
Co-authored-by: Christopher Biscardi <chris@christopherbiscardi.com>
2026-08-21 09:43:16 +00:00
..
headless gpui_linux: Add support for open_window in headless client (#60359) 2026-07-03 15:20:09 +00:00
wayland gpui: Make the Wayland render loop demand-driven (#60690) 2026-08-21 09:43:16 +00:00
x11 gpui_linux: Drain buffered X11 events after foreground work (#62081) 2026-08-20 15:01:09 +00:00
dispatcher.rs Fix "Task polled after completion" panic (#60693) 2026-07-09 18:06:00 +00:00
headless.rs gpui_linux: Add support for open_window in headless client (#60359) 2026-07-03 15:20:09 +00:00
keyboard.rs
platform.rs Preserve --user-data-dir across restarts (#62022) 2026-08-19 14:32:19 +00:00
system_notifications.rs gpui: Add system notification platform APIs (#61189) 2026-07-17 18:52:23 +00:00
text_system.rs
wayland.rs gpui: Add parent-anchored native popup windows (with wayland xdg_popup implementation only so far) (#60232) 2026-07-08 19:22:23 +00:00
x11.rs
xdg_desktop_portal.rs title_bar: Respect Linux titlebar config (#47506) 2026-03-23 22:01:12 +05:30