On Fri, 31 Mar 2023 09:11:20 GMT, Dmitry Cherepanov <[email protected]>
wrote:
> Please review this PR which suggests to skip updateIconImages() for not yet
> visible windows. The displayChanged notification can be sent to a window that
> is in the process of initiailization and calling updateIconImages() may lead
> to the deadlock.
>
> Testing: the deadlock no longer happens with this patch. The reg test for
> JDK-8276849 works (window icon is updated after changing DPI settings).
src/java.desktop/windows/classes/sun/awt/windows/WWindowPeer.java line 605:
> 603: if (((Window)target).isVisible()) {
> 604: updateIconImages();
> 605: }
Will we call "updateIconImages" when later we show the window or an update of
the icons will be missed if the notification come when the window is invisible?
Are you sure that it is not possible to trigger the next "trace" in the
application w/o using "updateIconImages"?
at
sun.java2d.loops.GraphicsPrimitiveMgr.initIDs(java.desktop@21-ea/Native Method)
- waiting on the Class initialization monitor for sun.java2d.loops.Blit
at
sun.java2d.loops.GraphicsPrimitiveMgr.<clinit>(java.desktop@21-ea/GraphicsPrimitiveMgr.java:56)
at sun.java2d.loops.DrawLine.locate(java.desktop@21-ea/DrawLine.java:51)
at
sun.java2d.SurfaceData.makeRenderLoops(java.desktop@21-ea/SurfaceData.java:884)
at
sun.awt.image.BufImgSurfaceData.getSolidLoops(java.desktop@21-ea/BufImgSurfaceData.java:412)
- locked <0x00000000c3fdd920> (a java.lang.Class for
sun.awt.image.BufImgSurfaceData)
at
sun.awt.image.BufImgSurfaceData.initSolidLoops(java.desktop@21-ea/BufImgSurfaceData.java:397)
at
sun.awt.image.BufImgSurfaceData.createData(java.desktop@21-ea/BufImgSurfaceData.java:256)
at
sun.awt.image.BufImgSurfaceData.createData(java.desktop@21-ea/BufImgSurfaceData.java:74)
at
sun.awt.image.BufImgSurfaceManager.<init>(java.desktop@21-ea/BufImgSurfaceManager.java:55)
at
sun.awt.image.SurfaceManager.getManager(java.desktop@21-ea/SurfaceManager.java:79)
at
sun.java2d.SurfaceData.getPrimarySurfaceData(java.desktop@21-ea/SurfaceData.java:275)
at
sun.java2d.SunGraphicsEnvironment.createGraphics(java.desktop@21-ea/SunGraphicsEnvironment.java:132)
at
java.awt.image.BufferedImage.createGraphics(java.desktop@21-ea/BufferedImage.java:1183)
at
sun.awt.SunToolkit.getScaledIconImage(java.desktop@21-ea/SunToolkit.java:1032)
at
sun.awt.SunToolkit.getScaledIconData(java.desktop@21-ea/SunToolkit.java:1046)
at
sun.awt.windows.WWindowPeer.updateIconImages(java.desktop@21-ea/WWindowPeer.java:468)
at
sun.awt.windows.WWindowPeer.updateGC(java.desktop@21-ea/WWindowPeer.java:603)
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13263#discussion_r1154794930