From duke at openjdk.org Wed Dec 3 13:12:42 2025 From: duke at openjdk.org (duke) Date: Wed, 3 Dec 2025 13:12:42 GMT Subject: git: openjdk/wakefield: jdk25-wayland: 17 new changesets Message-ID: Changeset: 68733fb4 Branch: jdk25-wayland Author: Nikita Tsarev Committer: Maxim Kartashev Date: 2025-11-03 18:40:58 +0000 URL: https://git.openjdk.org/wakefield/commit/68733fb49051ce9a948fe7465db1243ddcae76a3 JBR-9542 Wayland: Fix modifier mask on modifier key press/release When pressing a modifier key such as Shift or Alt, other toolkits include the corresponding bit in the modifier mask. Similiarly, when releasing a modifier key, other toolkits will not include this bit if the just released modifier key was the last key producing this bit. When pressing such a key, Wayland compositors first send the wl_keyboard.key event, and only then the wl_keyboard.modifiers event. This causes the reported AWT modifier mask to be inconsistent with XToolkit. This patch fixes this. ! src/java.desktop/unix/native/libawt_wlawt/WLKeyboard.c ! src/java.desktop/unix/native/libawt_wlawt/WLKeyboard.h ! src/java.desktop/unix/native/libawt_wlawt/WLToolkit.c Changeset: ac63e184 Branch: jdk25-wayland Author: Maxim Kartashev Date: 2024-02-21 17:07:37 +0000 URL: https://git.openjdk.org/wakefield/commit/ac63e18499de06d18d9005748d7d3b38f3b6df3a JBR-5989 Wayland: added more tests to jdk_awt_wayland ! test/jdk/TEST.groups Changeset: ae279266 Branch: jdk25-wayland Author: Nikita Gubarkov Committer: Maxim Kartashev Date: 2025-10-20 15:13:08 +0000 URL: https://git.openjdk.org/wakefield/commit/ae279266f1d5f3023b8cc365831d1fa469302c9a JBR-9505 Vulkan: Remove sun.java2d.vulkan.accelsd from tests (cherry picked from commit 3fb012e9dd7e83a0f1b69e410431ff86f636fb47) ! test/jdk/jb/java/awt/vulkan/ClipRenderTest.java ! test/jdk/jb/java/awt/vulkan/VulkanDisposeBlitDstTest.java ! test/jdk/jb/java/awt/vulkan/VulkanDisposeBlitSrcTest.java ! test/jdk/jb/java/awt/wayland/ImageTransformTest.java ! test/jdk/jb/java/awt/wayland/RobotGetOOBPixelsTest.java ! test/jdk/jb/java/awt/wayland/RobotGetPixelTest.java ! test/jdk/jb/java/awt/wayland/RobotGetPixelsTest.java ! test/jdk/jb/java/awt/wayland/VulkanBlitTest.java ! test/jdk/jb/java/awt/wayland/VulkanCompositeTest.java ! test/jdk/jb/java/awt/wayland/VulkanGCCompatibilityTest.java ! test/jdk/jb/java/awt/wayland/VulkanMaskFillTest.java Changeset: 25420b3f Branch: jdk25-wayland Author: Maxim Kartashev Date: 2025-11-11 12:28:17 +0000 URL: https://git.openjdk.org/wakefield/commit/25420b3fcd8658a7cc98a3fde8a27c1e25e24258 JBR-9598 Wayland: auto-detect Wayland session at startup Adds -Dawt.toolkit.name=auto to prefer WLToolkit over XToolkit when available. The default is still XToolkit. ! src/java.base/unix/native/libjli/java_md.c Changeset: ebedd18e Branch: jdk25-wayland Author: Nikita Tsarev Committer: Maxim Kartashev Date: 2025-11-14 12:17:42 +0000 URL: https://git.openjdk.org/wakefield/commit/ebedd18ea23dc3f2173db5eabbb329a79a0f1e39 JBR-9591 Wayland: Fix wrong DnD action on KWin This patch implements a workaround for a bug that exists on KWin 6.5. For some reason, KWin sends a wl_data_source.action(0) event immediately after wl_data_source.dnd_drop_finished(). This makes the drag source think that the DnD operation failed, even though it succeeded. The workaround it to ignore the wl_data_source.action() events after a successful wl_data_source.dnd_drop_finished() In addition to this, this patch also fixes some inconsistency with translating between AWT and Wayland DnD operation masks. This doesn't have any visible effect though, since the mask values happen to be the same. ! src/java.desktop/unix/classes/sun/awt/wl/WLDragSourceContextPeer.java ! src/java.desktop/unix/classes/sun/awt/wl/WLDropTargetContextPeer.java Changeset: 50f4d4df Branch: jdk25-wayland Author: Nikita Tsarev Committer: Maxim Kartashev Date: 2025-11-05 18:47:01 +0000 URL: https://git.openjdk.org/wakefield/commit/50f4d4dfe02dc784c60c2457a8ac09aa19d5d9a1 JBR-9581 Wayland: Find xkbcommon at configure time This commit changes how WLToolkit loads libxkbcommon. It will now be linked as a normal dynamic library at build time, instead of being loaded via dlopen. This commit also introduces dependency on libxkbcommon headers and removes the corresponding declarations from WLKeyboard.c. ! make/autoconf/lib-wayland.m4 ! src/java.desktop/unix/native/libawt_wlawt/WLKeyboard.c Changeset: 41058b94 Branch: jdk25-wayland Author: Nikita Tsarev Committer: Maxim Kartashev Date: 2025-11-17 11:52:55 +0000 URL: https://git.openjdk.org/wakefield/commit/41058b94ec3d5848dfc44b8871266cbfe899fce2 JBR-9642 Wayland: Call wl_data_offer.finish() This patch adds a call to wl_data_offer.finish() upon a successful completion of a drag-and-drop operation, as well as more synchronized annotations in WLDataOffer, to match the existing ones. Calling finish() doesn't seem to be required by most compositors when performing drag-and-drop, at least within the same window. Other toolkits, such as Qt, only call it when dealing with cross-application drag-and-drop. In the interest of maximal compatibility, this patch implements calling finish() always when a drag-and-drop operation succeeds. ! src/java.desktop/unix/classes/sun/awt/wl/WLDataOffer.java ! src/java.desktop/unix/classes/sun/awt/wl/WLDropTargetContextPeer.java Changeset: f391ab64 Branch: jdk25-wayland Author: Maxim Kartashev Date: 2025-11-14 13:12:42 +0000 URL: https://git.openjdk.org/wakefield/commit/f391ab64449a2f85076c258913750ce92dd1aec6 JBR-6187 Wayland: implement server-side decoration support Use -Dsun.awt.wl.WindowDecorationStyle=server to activate ! make/modules/java.desktop/gensrc/GensrcWayland.gmk ! src/java.desktop/unix/classes/sun/awt/wl/FrameDecoration.java ! src/java.desktop/unix/classes/sun/awt/wl/FullFrameDecorationHelper.java ! src/java.desktop/unix/classes/sun/awt/wl/MinimalFrameDecoration.java + src/java.desktop/unix/classes/sun/awt/wl/ServerSideFrameDecoration.java ! src/java.desktop/unix/classes/sun/awt/wl/WLComponentPeer.java ! src/java.desktop/unix/classes/sun/awt/wl/WLDecoratedPeer.java ! src/java.desktop/unix/classes/sun/awt/wl/WLToolkit.java ! src/java.desktop/unix/classes/sun/awt/wl/WLWindowPeer.java ! src/java.desktop/unix/native/libawt_wlawt/WLComponentPeer.c ! src/java.desktop/unix/native/libawt_wlawt/WLToolkit.c ! src/java.desktop/unix/native/libawt_wlawt/WLToolkit.h Changeset: b8345776 Branch: jdk25-wayland Author: Maxim Kartashev Date: 2025-11-20 17:43:40 +0000 URL: https://git.openjdk.org/wakefield/commit/b83457766f3ad08d84635daee7c4686e6a3c7442 JBR-9656 Wayland: toFront() does not work on KDE Plasma 6.5.2 KWin does not accept the serial number from a "keyboard enter" event in a window activation request, while a recent input event serial is OK. Gnome, however, requires the "keyboard enter" event serial. ! src/java.desktop/unix/classes/sun/awt/wl/WLComponentPeer.java Changeset: fe7e9358 Branch: jdk25-wayland Author: Nikita Tsarev Committer: Maxim Kartashev Date: 2025-11-20 11:49:50 +0000 URL: https://git.openjdk.org/wakefield/commit/fe7e9358ce47d0afb68b93f91e0053b2ad1d8f9d JBR-9483 Wayland: Support toplevel icons This patch implements support for the xdg_toplevel_icon_v1 protocol. The image choosing logic is just to pick the largest square image for now. The image scale factor is also not set, since it's unclear if it's needed and how it interacts with multi-monitor setups. NOTE: this patch introduces a dependency on wayland-protocols 1.37+. ! make/modules/java.desktop/gensrc/GensrcWayland.gmk ! src/java.desktop/unix/classes/sun/awt/wl/WLComponentPeer.java ! src/java.desktop/unix/classes/sun/awt/wl/WLToolkit.java ! src/java.desktop/unix/classes/sun/awt/wl/WLWindowPeer.java ! src/java.desktop/unix/native/libawt_wlawt/WLComponentPeer.c ! src/java.desktop/unix/native/libawt_wlawt/WLToolkit.c ! src/java.desktop/unix/native/libawt_wlawt/WLToolkit.h Changeset: 60c015e0 Branch: jdk25-wayland Author: Maxim Kartashev Date: 2025-11-24 12:43:59 +0000 URL: https://git.openjdk.org/wakefield/commit/60c015e0f75faefea598673a219f45da6da005d3 JBR-9672 Wayland: popup focus broken in Plasma 6.5.2, with Focus Stealing prevention >= Medium ! src/java.desktop/unix/classes/sun/awt/wl/WLComponentPeer.java ! src/java.desktop/unix/classes/sun/awt/wl/WLInputState.java Changeset: 649bacb1 Branch: jdk25-wayland Author: Nikita Provotorov Committer: Maxim Kartashev Date: 2025-11-28 18:42:04 +0000 URL: https://git.openjdk.org/wakefield/commit/649bacb1991df9bed1c23e357b7781b14409459f JBR-9719: Wayland: input methods in Speed search don't work if WLInputMethodZwpTextInputV3 logger is enabled Resetting the text iterator of each InputMethodEvent after it gets logged. (cherry picked from commit 3355214b435eaf9b7da202d1725eece27c2cc6f1) ! src/java.desktop/unix/classes/sun/awt/wl/im/text_input_unstable_v3/WLInputMethodZwpTextInputV3.java Changeset: 8f0e3b28 Branch: jdk25-wayland Author: Maxim Kartashev Date: 2025-12-01 15:02:40 +0000 URL: https://git.openjdk.org/wakefield/commit/8f0e3b28297d57f303b21994eb86273863ddc655 JBR-9727 Wayland: assertion error in ShadowImpl.updateSurfaceData ! src/java.desktop/unix/classes/sun/awt/wl/WLComponentPeer.java Changeset: b4e5ee19 Branch: jdk25-wayland Author: Maxim Kartashev Date: 2025-12-01 18:42:13 +0000 URL: https://git.openjdk.org/wakefield/commit/b4e5ee1948cef15c587ac6d57be2acd3ea2ab721 JBR-9728 Wayland: AssertionError in WLGraphicsDevice. ! src/java.desktop/unix/classes/sun/awt/wl/WLGraphicsEnvironment.java Changeset: 242c76c0 Branch: jdk25-wayland Author: Maxim Kartashev Date: 2025-12-02 15:06:36 +0000 URL: https://git.openjdk.org/wakefield/commit/242c76c02283d9ff376632c9579ee7bfa7212586 JBR-9733 Wayland: enable unconstrained popup positioning Use getRootPane() .putClientProperty("wlawt.popup_position_unconstrained", Boolean.TRUE) to enable unconstrained popup positioning. ! src/java.desktop/unix/classes/sun/awt/wl/WLComponentPeer.java ! src/java.desktop/unix/native/libawt_wlawt/WLComponentPeer.c + test/jdk/jb/javax/swing/wayland/WLPopupUnconstrained.java Changeset: 496285f0 Branch: jdk25-wayland Author: Maxim Kartashev Date: 2025-12-02 17:58:28 +0000 URL: https://git.openjdk.org/wakefield/commit/496285f0ce2e2046a6fd268d4870b9b21b08c081 JBR-9730 Wayland: to add a secondary expression in assertions ! src/java.desktop/unix/classes/sun/awt/wl/FullFrameDecorationHelper.java ! src/java.desktop/unix/classes/sun/awt/wl/GtkFrameDecoration.java ! src/java.desktop/unix/classes/sun/awt/wl/ServerSideFrameDecoration.java ! src/java.desktop/unix/classes/sun/awt/wl/WLComponentPeer.java ! src/java.desktop/unix/classes/sun/awt/wl/WLDataOffer.java ! src/java.desktop/unix/classes/sun/awt/wl/WLDataSource.java ! src/java.desktop/unix/classes/sun/awt/wl/WLGraphicsDevice.java ! src/java.desktop/unix/classes/sun/awt/wl/WLInputState.java ! src/java.desktop/unix/classes/sun/awt/wl/WLKeyboard.java ! src/java.desktop/unix/classes/sun/awt/wl/WLMainSurface.java ! src/java.desktop/unix/classes/sun/awt/wl/WLPointerEvent.java ! src/java.desktop/unix/classes/sun/awt/wl/WLRobotPeer.java ! src/java.desktop/unix/classes/sun/awt/wl/WLSurface.java ! src/java.desktop/unix/classes/sun/awt/wl/WLToolkit.java ! src/java.desktop/unix/classes/sun/awt/wl/im/text_input_unstable_v3/ClientComponentCaretPositionTracker.java ! src/java.desktop/unix/classes/sun/awt/wl/im/text_input_unstable_v3/InputContextState.java ! src/java.desktop/unix/classes/sun/awt/wl/im/text_input_unstable_v3/JavaPreeditString.java ! src/java.desktop/unix/classes/sun/awt/wl/im/text_input_unstable_v3/WLInputMethodDescriptorZwpTextInputV3.java ! src/java.desktop/unix/classes/sun/awt/wl/im/text_input_unstable_v3/WLInputMethodZwpTextInputV3.java Changeset: 0bf2bd41 Branch: jdk25-wayland Author: Maxim Kartashev Date: 2025-12-03 17:10:22 +0000 URL: https://git.openjdk.org/wakefield/commit/0bf2bd412d3323fa534be586b6f449fb77ea2e4c Sync up with the state of JBR25 ! src/java.desktop/unix/classes/sun/awt/wl/WLWindowPeer.java From maxim.kartashev at jetbrains.com Wed Dec 10 13:09:13 2025 From: maxim.kartashev at jetbrains.com (Maxim Kartashev) Date: Wed, 10 Dec 2025 17:09:13 +0400 Subject: RFO: GUI tests for wakefield Message-ID: Hi, All! Many tests in test/jdk/javax/swing/ or awt/ that we run turned out to be not very useful: they create some UI and then immediately return from main(). If such a test is executed under jtreg, jtreg will almost immediately call System.exit() and terminate the whole test. One concrete example is test/jdk/javax/swing/PopupFactory/8048506/bug8048506.java, but there are many more like this. Currently, running such tests on Linux/Xorg may cause a window to flash briefly, which could be enough time for the test to actually complete (but maybe not). Under Wayland, however, showing a window on the screen requires an involved, asynchronous process of negotiation with the server; this happens on EDT after setVisible(true) has returned already. Consequently, such tests under Wayland usually don't run long enough for a single pixel to be shown on the screen. The process exits at around the time the Wayland server agrees about the size and the role of the window. The specification of Component.setVisible() is vague, so I defer to the expertise of people on this list to determine which part is at fault and needs to be "fixed". Should such tests wait before exiting main()? Or should the Wayland toolkit guarantee that the window is indeed on the screen before setVisible(true) returns? Thanks in advance. Maxim. -------------- next part -------------- An HTML attachment was scrubbed... URL: From philip.race at oracle.com Wed Dec 10 19:54:58 2025 From: philip.race at oracle.com (Phil Race) Date: Wed, 10 Dec 2025 11:54:58 -0800 Subject: RFO: GUI tests for wakefield In-Reply-To: References: Message-ID: <1bf9460a-79a2-4c76-bc55-0cabb31314af@oracle.com> setVisible isn't required to be synchronous like that. So tests that expect something to be actually on the screen need to wait and/or check. Over the years, we've stabilised many tests in this regard. It is an ongoing process. Having said that, I have to ask why Wayland is a special case. Can you compare the X[wayland] vs wayland steps for window display ? -phil. On 12/10/2025 5:09, Maxim Kartashev wrote: > Hi, All! > > Many tests in?test/jdk/javax/swing/ or awt/ that we run turned out to > be not very useful: they create some UI and then immediately return > from main(). If such a test is executed under jtreg, jtreg will almost > immediately call System.exit() and terminate the whole test. One > concrete example > is?test/jdk/javax/swing/PopupFactory/8048506/bug8048506.java, but > there are many more like this. > > Currently, running such tests on Linux/Xorg may cause a window to > flash briefly, which could be enough time for the test to actually > complete (but maybe not). Under Wayland, however, showing a window on > the screen requires an involved, asynchronous process of negotiation > with the server; this happens on EDT after setVisible(true) has > returned already. Consequently, such tests under Wayland usually don't > run long enough for a single pixel to be shown on the screen. The > process exits at around the time the Wayland server agrees about the > size and the role of the window. > > The specification of Component.setVisible() is vague, so I defer to > the expertise of people on this list to determine which part is at > fault and needs to be "fixed". Should such tests wait before exiting > main()? Or should the Wayland toolkit guarantee that the window is > indeed on the screen before setVisible(true) returns? > > Thanks in advance. > > Maxim. From bylokhov at amazon.com Mon Dec 15 16:47:23 2025 From: bylokhov at amazon.com (Sergey Bylokhov) Date: Mon, 15 Dec 2025 08:47:23 -0800 Subject: RFO: GUI tests for wakefield In-Reply-To: References: Message-ID: <480f1cdd-7a54-40f0-987b-c962f6deb7d4@amazon.com> On 12/10/25 05:09, Maxim Kartashev wrote: > Many tests in?test/jdk/javax/swing/ or awt/ that we run turned out to be not very useful: they > create some UI and then immediately return from main(). If such a test is executed under jtreg, > jtreg will almost immediately call System.exit() and terminate the whole test. One concrete example > is?test/jdk/javax/swing/PopupFactory/8048506/bug8048506.java, but there are many more like this. Many such tests, including the one above, do not need to display anything on the screen. They create a displayable window (with a peer) and trigger code paths that previously caused an exception. Of course, it is always a good thing to update tests when unstable ones are found. -- Best regards, Sergey.