<Swing Dev> [14] RFR: JDK-8223158: Docked MacBook cannot start any Java Swing applications

Prasanta Sadhukhan prasanta.sadhukhan at oracle.com
Wed Sep 25 10:49:33 UTC 2019


Hi All,

Please review a fix for an issue where it is seen that if a MacBookPro 
is attached to an external monitor via dock and macbook lid is closed,
no Java swing applications will start.

It was found 
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration() 
is returning null in this particular setup.

Since it was difficult to reproduce locally, enabling tracing reveals 
that CGLGraphicsConfig#getCGLConfigInfo() was failing in 
NSOpenGLPixelFormat.initWithAttributes()

Appkit documentation 
https://developer.apple.com/documentation/appkit/nsopenglpixelformat/1436219-initwithattributes?language=objc
says that it will return "|nil| if an object with the desired attributes 
could not be initialized".
Now, when the main display is closed, the
CGDisplayIDToOpenGLDisplayMask(displayID)
is returning 2 as glMask which when passed as an attribute to 
NSOpenGLPixelFormat, it fails to initialize.
Normally, with main Display being used, glMask is 1.

Proposed fix is to see if first initialization fails, then retry 
initialization without the offending glMask value for 
NSOpenGLPFAScreenMask attributes,
as documentation 
https://developer.apple.com/documentation/appkit/1436213-opengl_pixel_format_attributes/nsopenglpfascreenmask?language=objc
says "All screens specified in the bit mask are guaranteed to be 
supported by the pixel format.", so if it is not guranteed to be 
supported, initAttributes() might fail.

Bug: https://bugs.openjdk.java.net/browse/JDK-8223158

webrev: http://cr.openjdk.java.net/~psadhukhan/8223158/webrev.0/

Regards
Prasanta
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/swing-dev/attachments/20190925/78beef8c/attachment.html>


More information about the swing-dev mailing list