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

Reply via email to