Known issues

Known issues

Problems seen in Patina apps that aren't fixed yet, with what's known so far.

Windows stop redrawing on GNOME Shell until minimised

Seen: 2026-10-11, GNOME Shell 50.1 on Wayland, NVIDIA (Vulkan), eframe 0.35 / winit 0.30.13. Photograph 0.4.4 and Notebook froze within half an hour of each other. Both came back after being minimised and restored.

What happens:

  • On Wayland, winit sends RedrawRequested only after the compositor's frame callback for the window's last frame arrives (FrameCallbackState::Requested in winit's Wayland backend). GNOME Shell stopped sending those callbacks while the windows were still on screen, so no redraw ever came.
  • Input still arrives, but every repaint it asks for waits behind the missing callback, so the window looks frozen.
  • An app that repaints continuously spins (Photograph: about 90% of a core). eframe's check_redraw_requests sets ControlFlow::Poll and calls request_redraw on every pass. Its guard for hidden windows doesn't help: winit can't tell that a window is minimised on Wayland.
  • An app that repaints on demand just sleeps (Notebook).
  • Minimising and restoring makes GNOME Shell send frame callbacks again.

Evidence:

  • eu-stack and perf of the stuck processes showed the main thread in winit's pump_events/loop_dispatch, with no egui or wgpu frames at all.
  • From the same period, GNOME Shell's journal repeatedly logged meta_window_set_stack_position_no_sync: assertion 'window->stack_position >= 0' failed. A window missing from the stack would plausibly be treated as hidden and get no frame callbacks. That link is unproven.

Suspected: a GNOME Shell bug, possibly set off by moving or raising windows. Patina's custom title bar hands every drag to the compositor (StartDrag). Not reproduced on purpose yet.

Workaround: minimise and restore the window.

To look into:

  1. Run an app with WAYLAND_DEBUG=client logging to a file until it freezes. The log will show the last wl_surface.frame request that never got a wl_callback.done. Note the time of GNOME Shell's stack assertion.
  2. Find what triggers it: dragging by the title bar, maximising, workspaces, screen lock.
  3. Report it to GNOME (mutter) with the log.
  4. Check whether a newer winit times out a missing frame callback. If it does, decide whether Patina should carry a workaround until GNOME is fixed.