RFR: 8280991: [XWayland] No displayChanged event after setDisplayMode call

Alexander Zvegintsev azvegint at openjdk.org
Tue Feb 25 12:12:02 UTC 2025


Wayland clients are by design not allowed to change the resolution in Wayland.
XRandR in Xwayland is just an emulation, it doesn't actually change the desktop resolution. This emulation is per window/x11 client, so different clients can have different emulated resolutions at the same time.

Any request to get the current display mode from the system will always return the original screen resolution, even if we are in emulated resolution.
So with this fix, we store the last display mode set so that we can react correctly to the displayChanged event later.

---

There are two system side fixes related to this issue, which causes missing ConfigureNotify events to be emitted when an emulated resolution change occurs:

1. https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/731 - emits when the resolution changes to an emulated one 
2. https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/890 - emits when the resolution changes to a native one 

The second one is only available in GnomeShell 43+ (e.g. Ubuntu 22.10+), so one of the tests is excluded for versions below that.

---

Testing looks good (manual + automated).

-------------

Commit messages:
 - 8280991: [XWayland] No displayChanged event after setDisplayMode call

Changes: https://git.openjdk.org/jdk/pull/23774/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23774&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8280991
  Stats: 89 lines in 4 files changed: 85 ins; 1 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/23774.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23774/head:pull/23774

PR: https://git.openjdk.org/jdk/pull/23774


More information about the client-libs-dev mailing list