#2754

[Bug]: Empty window gap when exiting fullscreen

Openjoaomendoncaaopened 11d ago

Operating system

Linux

Version

  • Helium 0.19.4.1 (Chromium 155.0.8059.84) flags: --ozone-platform=x11 --disable-accelerated-video-decode
  • Hyprland 0.56.2, Arch (omarchy), dual monitor: DP-2 2560x1440 + portrait 1920x1080 transformed, 40px top bar reserved
  • NVIDIA 1060, proprietary 580.178.04

Have you tested that this is not an upstream issue or an issue with your configuration?

  • I have tried reproducing this issue in Chrome and it could not be reproduced there
  • I have tried reproducing this issue in ungoogled-chromium and it could not be reproduced there
  • I have tried reproducing this issue in Helium with a new and empty profile using --user-data-dir command line argument and it could not be reproduced there

Description

When I exit fullscreen, the window content is painted lower than expected until next repaint (on XWayland!)

Crash ID

No response

How to Reproduce?

  1. Tile Helium on primary monitor, open a YouTube watch page with video.
  2. Toggle compositor fullscreen (or enter/exit HTML5 video fullscreen).
  3. On exit: top of the window shows a small strip with your wallpaper; toolbar+page shifted down. Persists indefinitely.
  4. Refocus, window drag, or another fullscreen toggle repaints correctly. Alternates across toggles.
  5. Frequency note: reproduces reliably on tabs which are playing multimedia, but also observed once on a non-video window. Video playback raises the odds of it happening but isn't strictly required.

Actual behavior

Here's a quick screen rec that should be self explanatory (helium on the left, chromium on the right):

https://github.com/user-attachments/assets/73161a10-b33a-4b25-beb4-2741a28f78f9

Notice how when I toggle off the status bar, which removes the Hyprland reserved space, the bug now only makes the gap roughly the height of the Hyprland gaps.

Expected behavior

No empty gaps.

Additional context

I tried to spin up some clankers to investigate, and this seems like important context as to why I'm not filling this in hyprland:

Evidence it's client paint, not the compositor

  • hyprctl clients -j during the gap: at [12, 52] size [2536, 1376] fs: 0 — correct.
  • Real X geometry (XGetGeometry/XTranslateCoordinates) during the gap matches healthy baseline exactly.
  • Same binary on native Wayland shows no gap (but natively: default GL freezes on video, Vulkan blank viewport, no-sandbox still freezes, SwiftShader unusably slow — XWayland is the only usable backend here).
  • Not hyprwm/Hyprland#13322 — that one is stuck geometry; here geometry is correct, only paint is wrong.

Additionally, one might ask why I'm on XWayland and if this is an x y problem, since the issue does NOT happen in native Wayland.

The reason is because I'm getting weird system freezes when pairing my hardware with native Wayland as a backend for helium.

Activity

0

No activity yet.