gpui: Fix background window freezes on wayland (#53597)

Lukas Wirth created

Release Notes:

- N/A or Added/Fixed/Improved ...

Change summary

crates/gpui/src/window.rs | 7 +++++++
1 file changed, 7 insertions(+)

Detailed changes

crates/gpui/src/window.rs 🔗

@@ -1232,6 +1232,13 @@ impl Window {
                     if let Some(last_frame) = last_frame_time.get()
                         && now.duration_since(last_frame) < min_interval
                     {
+                        // Must still complete the frame on platforms that require it.
+                        // On Wayland, `surface.frame()` was already called to request the
+                        // next frame callback, so we must call `surface.commit()` (via
+                        // `complete_frame`) or the compositor won't send another callback.
+                        handle
+                            .update(&mut cx, |_, window, _| window.complete_frame())
+                            .log_err();
                         return;
                     }
                 }