aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2019-08-19 13:14:24 +0200
committerSven Gothel <[email protected]>2019-08-19 13:14:24 +0200
commit7ec068e0c95a230101450cc80031f76770a0cd49 (patch)
tree8abcdad69146b93f56799a94ef84507b6727c684
parent24b75b2e91ec5f101b19fa24aa3804adb3819ebf (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.java16
-rw-r--r--src/newt/classes/jogamp/newt/awt/NewtFactoryAWT.java6
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