On Fri, 23 Feb 2024 13:44:15 GMT, Christoph Langer <[email protected]> wrote:
>> The assertions reported in the bug were observed spuriously and here and >> there broke tests in some Windows configurations. >> For instance [JDK-8266129](https://bugs.openjdk.org/browse/JDK-8266129), >> [JDK-8269529](https://bugs.openjdk.org/browse/JDK-8269529) or >> [JDK-8323664](https://bugs.openjdk.org/browse/JDK-8323664) came up due to >> this. >> >> The problem is that in Windows environments without a valid display, e.g. >> started by system services or via PowerShell Remoting, one sees a Monitor >> with name 'Windisc' in `EnumDisplayMonitors`. >> However, it seems to be some kind of a pseudo device where you can not get a >> DC via `CreateDC`. This behavior/monitor type doesn't seem to be well >> documented, though. >> >> I hereby modify the device initialization code to only count/detect monitors >> where CreateDC returns non-NULL in Devices.cpp. I also add some more >> checking/error handling to AwtWin32GraphicsDevice::Initialize() for >> correctness. >> >> Furthermore, I re-enable the test >> `javax/swing/reliability/HangDuringStaticInitialization.java` for Windows >> Debug VMs, which reverts the fix from JDK-8269529 that should not be >> necessary any more. > > Christoph Langer has updated the pull request with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains ten additional > commits since the last revision: > > - Reflect display detection in java.awt.GraphicsEnvironment::isHeadless() > - Merge branch 'master' into JDK-8185862 > - Get rid of global variables and restore old handling wrt calling > ::GetDIBits > - Merge branch 'master' into JDK-8185862 > - Little cleanup > - Review Feedback Alexey > - Merge branch 'master' into JDK-8185862 > - Add comments > - JDK-8185862 The change looks good but I'd like to run it through all our tests since if there's anything wrong with this code path we are in trouble :-) src/java.desktop/windows/classes/sun/awt/Win32GraphicsEnvironment.java line 91: > 89: private static native void initDisplay(); > 90: > 91: private static boolean displayInitialized; // = false; So it seems like this is currently un-needed since there's only the one static initializer that calls this, so removing it should be fine. ------------- PR Review: https://git.openjdk.org/jdk/pull/17614#pullrequestreview-1898985578 PR Review Comment: https://git.openjdk.org/jdk/pull/17614#discussion_r1501200459
