diff options
author | Sven Gothel <[email protected]> | 2011-09-25 04:28:47 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-09-25 04:28:47 +0200 |
commit | b72bedc93e4dca6d3c55cae0cc811cb4baac13e0 (patch) | |
tree | 020d3c36e5b452e0ec813882e652bb835d8218d7 /src/nativewindow/classes/jogamp | |
parent | b7ca9b5dffa8c6d197258e1bcd7b065c36136d17 (diff) |
NativeWindow/OSX: Add nativewindow_macosx lib and nativewindow.os.macosx.jar for 'GetLocationOnScreen()'
Diffstat (limited to 'src/nativewindow/classes/jogamp')
-rw-r--r-- | src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java | 13 | ||||
-rw-r--r-- | src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java | 39 |
2 files changed, 50 insertions, 2 deletions
diff --git a/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java b/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java index 9c29bbd52..d0152ce4e 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java +++ b/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java @@ -40,6 +40,7 @@ package jogamp.nativewindow.jawt.macosx; +import java.awt.Component; import java.security.AccessController; import java.security.PrivilegedAction; @@ -53,6 +54,7 @@ import jogamp.nativewindow.jawt.JAWTFactory; import jogamp.nativewindow.jawt.JAWTWindow; import jogamp.nativewindow.jawt.JAWT_DrawingSurface; import jogamp.nativewindow.jawt.JAWT_DrawingSurfaceInfo; +import jogamp.nativewindow.macosx.OSXUtil; public class MacOSXJAWTWindow extends JAWTWindow { @@ -86,7 +88,7 @@ public class MacOSXJAWTWindow extends JAWTWindow { ret = NativeWindow.LOCK_SURFACE_CHANGED; } if (firstLock) { - AccessController.doPrivileged(new PrivilegedAction() { + AccessController.doPrivileged(new PrivilegedAction<Object>() { public Object run() { dsi = ds.GetDrawingSurfaceInfo(); return null; @@ -132,7 +134,14 @@ public class MacOSXJAWTWindow extends JAWTWindow { } protected Point getLocationOnScreenImpl(int x, int y) { - return null; // FIXME + Component c = component; + while(null != c) { + x += c.getX(); + y += c.getY(); + c = c.getParent(); + } + // return OSXUtil.GetLocationOnScreen(getWindowHandle(), x, y); + return new Point(x, y); } // Variables for lockSurface/unlockSurface diff --git a/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java b/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java new file mode 100644 index 000000000..ffd23fef7 --- /dev/null +++ b/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java @@ -0,0 +1,39 @@ +package jogamp.nativewindow.macosx; + +import javax.media.nativewindow.NativeWindowException; +import javax.media.nativewindow.util.Point; + +import jogamp.nativewindow.Debug; +import jogamp.nativewindow.NWJNILibLoader; + +public class OSXUtil { + private static boolean isInit = false; + private static final boolean DEBUG = Debug.debug("OSXUtil"); + + public static synchronized void initSingleton(boolean firstX11ActionOnProcess) { + if(!isInit) { + NWJNILibLoader.loadNativeWindow("macosx"); + + if( !initIDs0() ) { + throw new NativeWindowException("MacOSX: Could not initialized native stub"); + } + + if(DEBUG) { + System.out.println("OSX.isFirstX11ActionOnProcess: "+firstX11ActionOnProcess); + } + + isInit = true; + } + } + + public static boolean requiresToolkitLock() { + return false; + } + + public static Point GetLocationOnScreen(long windowOrView, int src_x, int src_y) { + return (Point) GetLocationOnScreen0(windowOrView, src_x, src_y); + } + + private static native boolean initIDs0(); + private static native Object GetLocationOnScreen0(long windowOrView, int src_x, int src_y); +} |