summaryrefslogtreecommitdiffstats
path: root/src/nativewindow/classes
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-09-25 04:28:47 +0200
committerSven Gothel <[email protected]>2011-09-25 04:28:47 +0200
commitb72bedc93e4dca6d3c55cae0cc811cb4baac13e0 (patch)
tree020d3c36e5b452e0ec813882e652bb835d8218d7 /src/nativewindow/classes
parentb7ca9b5dffa8c6d197258e1bcd7b065c36136d17 (diff)
NativeWindow/OSX: Add nativewindow_macosx lib and nativewindow.os.macosx.jar for 'GetLocationOnScreen()'
Diffstat (limited to 'src/nativewindow/classes')
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java3
-rw-r--r--src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java13
-rw-r--r--src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java39
3 files changed, 53 insertions, 2 deletions
diff --git a/src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java b/src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java
index 5c01c681a..ef8876f50 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java
@@ -82,6 +82,7 @@ public abstract class NativeWindowFactory {
public static final String AWTComponentClassName = "java.awt.Component" ;
public static final String JAWTUtilClassName = "jogamp.nativewindow.jawt.JAWTUtil" ;
public static final String X11UtilClassName = "jogamp.nativewindow.x11.X11Util";
+ public static final String OSXUtilClassName = "jogamp.nativewindow.macosx.OSXUtil";
public static final String GDIClassName = "jogamp.nativewindow.windows.GDI";
public static final String X11JAWTToolkitLockClassName = "jogamp.nativewindow.jawt.x11.X11JAWTToolkitLock" ;
public static final String X11ToolkitLockClassName = "jogamp.nativewindow.x11.X11ToolkitLock" ;
@@ -139,6 +140,8 @@ public abstract class NativeWindowFactory {
clazzName = X11UtilClassName;
} else if( TYPE_WINDOWS.equals(nativeWindowingTypePure) ) {
clazzName = GDIClassName;
+ } else if( TYPE_MACOSX.equals(nativeWindowingTypePure) ) {
+ clazzName = OSXUtilClassName;
}
if( null != clazzName ) {
ReflectionUtil.callStaticMethod(clazzName, "initSingleton",
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);
+}