diff options
author | Sven Gothel <[email protected]> | 2019-08-19 13:14:24 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2019-08-19 13:14:24 +0200 |
commit | 7ec068e0c95a230101450cc80031f76770a0cd49 (patch) | |
tree | 8abcdad69146b93f56799a94ef84507b6727c684 | |
parent | 24b75b2e91ec5f101b19fa24aa3804adb3819ebf (diff) |
Bug 1363: Java 11: Resolve unsupported JAWTUtil.getMonitorDisplayID(..)
Previous commits removed access to OSX's GraphicsDevice.getCGDisplayID()
on Java9+, avoiding illegal reflective access.
Here we JAWTUtil.getMonitorDisplayID(..) simply returns null
if Java9 or !OSX, so the sole NewtFactory caller falls back
to the alternative working solution.
Orig patch Wade Walker:
This was used on Mac OS only to create a MonitorDevice in
NewtFactoryAWT. But there was a fallback method for creating
MonitorDevice, and testing with TestGearsES2GLJPanelAWT shows that the
fallback method seems to give identical results on Mac, so changed to
just use the fallback method (which is now the only method) everywhere.
This gets rid of an illegal reflective access.
-rw-r--r-- | src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java | 16 | ||||
-rw-r--r-- | src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java | 6 |
2 files changed, 14 insertions, 8 deletions
diff --git a/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java b/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java index 3eb5328bd..d2dc8f91b 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java +++ b/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTUtil.java @@ -557,19 +557,25 @@ public class JAWTUtil { return jawtToolkitLock; } - public static final int getMonitorDisplayID(final GraphicsDevice device) { - int displayID = 0; + /** + * Queries the Monitor's display ID of the given device + * <p> + * Currently only supported for OSX on Java<9 + * </p> + * @param device for which the display id is being queried + * @return {@code null} if not supported (Java9+ or !OSX), otherwise the monitor displayID + */ + public static final Integer getMonitorDisplayID(final GraphicsDevice device) { if( null != getCGDisplayIDMethodOnOSX ) { // OSX specific for Java<9 try { final Object res = getCGDisplayIDMethodOnOSX.invoke(device); if (res instanceof Integer) { - displayID = ((Integer)res).intValue(); + return (Integer)res; } } catch (final Throwable t) {} } - // TODO: Needs non-reflective Java9+ solution for all platforms - return displayID; + return null; } /** diff --git a/src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java b/src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java index 4e9273e83..97625c8aa 100644 --- a/src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java +++ b/src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java @@ -170,12 +170,12 @@ public class NewtFactoryAWT extends NewtFactory { */ public static MonitorDevice getMonitorDevice(final Screen screen, final java.awt.Component awtComp) throws IllegalArgumentException { final java.awt.GraphicsConfiguration gc = checkComponentValid(awtComp); - final String nwt = NativeWindowFactory.getNativeWindowType(true); MonitorDevice res = null; screen.addReference(); try { - if( NativeWindowFactory.TYPE_MACOSX == nwt ) { - res = screen.getMonitor( JAWTUtil.getMonitorDisplayID( gc.getDevice() ) ); + final Integer dispID = JAWTUtil.getMonitorDisplayID( gc.getDevice() ); + if( null != dispID ) { + res = screen.getMonitor( dispID.intValue() ); } if( null == res ) { // Fallback, use AWT component coverage |