On Tue, 25 Feb 2025 12:07:11 GMT, Alexander Zvegintsev <[email protected]> wrote:
> 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). test/jdk/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java line 60: > 58: > 59: public static void main(String[] args) { > 60: if (Platform.isOnWayland() && getGnomeShellMajorVersion() < 43) { Do you think this might be easier to read if the method is changed to `isFixDelivered` or something similar? I think if it would detect the version and compare it inside and just output true or false. This would also remove the version 1000 if there is no gnome-shell installed on the system, which is a bit confusing imo test/jdk/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java line 256: > 254: .start(); > 255: try (InputStreamReader isr = new > InputStreamReader(process.getInputStream()); > 256: BufferedReader reader = new BufferedReader(isr)) { Wouldn't it be simpler if the reader is retrieved with `process.inputReader()`? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/23774#discussion_r1970074838 PR Review Comment: https://git.openjdk.org/jdk/pull/23774#discussion_r1970074977
