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