summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jnlp-files/nativewindow.jnlp21
-rw-r--r--make/build-common.xml6
-rw-r--r--make/build-jogl.xml1
-rw-r--r--make/build-nativewindow.xml45
-rw-r--r--make/config/jogl/gdi-CustomCCode.c48
-rw-r--r--make/config/jogl/gdi-win32.cfg26
-rw-r--r--make/config/nativewindow/win32-CustomJavaCode.java24
-rw-r--r--make/config/nativewindow/win32-lib.cfg37
-rw-r--r--make/scripts/tests.bat5
-rw-r--r--make/scripts/tests.sh5
-rw-r--r--make/stub_includes/win32/window-lib.c (renamed from make/stub_includes/win32/window-system0.c)0
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsDummyWGLDrawable.java9
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLContext.java15
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java13
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java13
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java19
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java26
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawable.java20
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawableFactory.java38
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java19
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java22
-rw-r--r--src/nativewindow/native/windows/GDImisc.c152
-rw-r--r--src/newt/classes/com/jogamp/newt/impl/windows/WindowsWindow.java4
-rw-r--r--src/newt/native/WindowsWindow.c44
24 files changed, 417 insertions, 195 deletions
diff --git a/jnlp-files/nativewindow.jnlp b/jnlp-files/nativewindow.jnlp
index 67cb61279..8af99a57c 100644
--- a/jnlp-files/nativewindow.jnlp
+++ b/jnlp-files/nativewindow.jnlp
@@ -19,48 +19,51 @@
</resources>
<resources os="Windows" arch="x86">
+ <jar href="nativewindow.os.windows.jar" main="true" />
<nativelib href = "nativewindow-natives-windows-i586.jar" />
</resources>
<resources os="Windows" arch="amd64">
+ <jar href="nativewindow.os.windows.jar" main="true" />
<nativelib href = "nativewindow-natives-windows-amd64.jar" />
</resources>
<resources os="Windows" arch="x86_64">
+ <jar href="nativewindow.os.windows.jar" main="true" />
<nativelib href = "nativewindow-natives-windows-amd64.jar" />
</resources>
<resources os="SunOS" arch="sparc">
- <jar href="nativewindow.x11.jar" main="true" />
+ <jar href="nativewindow.os.x11.jar" main="true" />
<nativelib href = "nativewindow-natives-solaris-sparc.jar" />
</resources>
<resources os="SunOS" arch="sparcv9">
- <jar href="nativewindow.x11.jar" main="true" />
+ <jar href="nativewindow.os.x11.jar" main="true" />
<nativelib href = "nativewindow-natives-solaris-sparcv9.jar" />
</resources>
<resources os="SunOS" arch="x86">
- <jar href="nativewindow.x11.jar" main="true" />
+ <jar href="nativewindow.os.x11.jar" main="true" />
<nativelib href = "nativewindow-natives-solaris-i586.jar" />
</resources>
<resources os="SunOS" arch="amd64">
- <jar href="nativewindow.x11.jar" main="true" />
+ <jar href="nativewindow.os.x11.jar" main="true" />
<nativelib href = "nativewindow-natives-solaris-amd64.jar" />
</resources>
<resources os="SunOS" arch="x86_64">
- <jar href="nativewindow.x11.jar" main="true" />
+ <jar href="nativewindow.os.x11.jar" main="true" />
<nativelib href = "nativewindow-natives-solaris-amd64.jar" />
</resources>
<resources os="Linux" arch="i386">
- <jar href="nativewindow.x11.jar" main="true" />
+ <jar href="nativewindow.os.x11.jar" main="true" />
<nativelib href = "nativewindow-natives-linux-i586.jar" />
</resources>
<resources os="Linux" arch="x86">
- <jar href="nativewindow.x11.jar" main="true" />
+ <jar href="nativewindow.os.x11.jar" main="true" />
<nativelib href = "nativewindow-natives-linux-i586.jar" />
</resources>
<resources os="Linux" arch="amd64">
- <jar href="nativewindow.x11.jar" main="true" />
+ <jar href="nativewindow.os.x11.jar" main="true" />
<nativelib href = "nativewindow-natives-linux-amd64.jar" />
</resources>
<resources os="Linux" arch="x86_64">
- <jar href="nativewindow.x11.jar" main="true" />
+ <jar href="nativewindow.os.x11.jar" main="true" />
<nativelib href = "nativewindow-natives-linux-amd64.jar" />
</resources>
<resources os="Mac OS X" arch="i386">
diff --git a/make/build-common.xml b/make/build-common.xml
index 468e5933c..e6a066197 100644
--- a/make/build-common.xml
+++ b/make/build-common.xml
@@ -274,6 +274,7 @@
<property name="nativewindow.core.jar" value="${build.nativewindow}/nativewindow.core.jar" />
<property name="nativewindow.awt.jar" value="${build.nativewindow}/nativewindow.awt.jar" />
<property name="nativewindow.os.x11.jar" value="${build.nativewindow}/nativewindow.os.x11.jar" />
+ <property name="nativewindow.os.windows.jar" value="${build.nativewindow}/nativewindow.os.windows.jar" />
<property name="jogl.core.jar" value="${build.jogl}/jogl.core.jar" />
<property name="jogl.cg.jar" value="${build.jogl}/jogl.cg.jar" />
@@ -312,8 +313,9 @@
<property name="newt.intelgdl.jar" value="${build.newt}/newt.intelgdl.jar" />
<!-- Atomic CDC JARS -->
- <property name="nativewindow.core.cdc.jar" value="${build.nativewindow}/nativewindow.core.cdc.jar" />
- <property name="nativewindow.os.x11.cdc.jar" value="${build.nativewindow}/nativewindow.os.x11.cdc.jar" />
+ <property name="nativewindow.core.cdc.jar" value="${build.nativewindow}/nativewindow.core.cdc.jar" />
+ <property name="nativewindow.os.x11.cdc.jar" value="${build.nativewindow}/nativewindow.os.x11.cdc.jar" />
+ <property name="nativewindow.os.windows.cdc.jar" value="${build.nativewindow}/nativewindow.os.windows.cdc.jar" />
<property name="jogl.core.cdc.jar" value="${build.jogl}/jogl.core.cdc.jar" />
<property name="jogl.gles1.cdc.jar" value="${build.jogl}/jogl.gles1.cdc.jar" />
diff --git a/make/build-jogl.xml b/make/build-jogl.xml
index 850393202..ddfbc25f7 100644
--- a/make/build-jogl.xml
+++ b/make/build-jogl.xml
@@ -724,7 +724,6 @@
<antcall target="java.generate.gl.platforms" inheritRefs="true">
<param name="window.os.system" value="win32"/>
- <param name="window.os0.cfg" value="${config.jogl}/gdi-win32.cfg" />
<param name="window.os1.cfg" value="${config.jogl}/wgl-win32.cfg" />
<param name="glext.platform.cfg" value="${config.jogl}/wglext.cfg" />
<param name="glext.platform.header" value="${stub.includes}/win32/wglext.c" />
diff --git a/make/build-nativewindow.xml b/make/build-nativewindow.xml
index 46a3f58f4..432646841 100644
--- a/make/build-nativewindow.xml
+++ b/make/build-nativewindow.xml
@@ -81,6 +81,9 @@
<property name="java.part.x11"
value="com/jogamp/nativewindow/impl/x11/** javax/media/nativewindow/x11/*" />
+ <property name="java.part.windows"
+ value="com/jogamp/nativewindow/impl/windows/** javax/media/nativewindow/windows/*" />
+
<!-- condition excludes -->
<condition property="java.excludes.awt"
@@ -231,7 +234,7 @@
</gluegen>
<copy todir="${src.generated.java-cdc}">
<fileset dir="${src.generated.java}"
- includes="com/jogamp/nativewindow/impl/x11/**" />
+ includes="com/jogamp/nativewindow/impl/x11/** com/jogamp/nativewindow/impl/windows/**" />
</copy>
</target>
@@ -286,6 +289,7 @@
<echo message="Generating platform-specifics: Win32" />
<antcall target="java.generate.platforms" inheritRefs="true">
<param name="window.os.system" value="win32"/>
+ <param name="windowlib.os.cfg" value="${config.nativewindow}/win32-lib.cfg" />
<param name="jawt.cfg" value="${config.nativewindow}/jawt-win32.cfg" />
<param name="jawt.platform.header" value="${stub.includes}/jni/win32/jawt_md.h" />
</antcall>
@@ -406,7 +410,7 @@
<linker id="linker.cfg.win32.msvc.nativewindow" extends="linker.cfg.win32.msvc">
<syslibset libs="gdi32, user32, kernel32" />
</linker>
-
+
<linker id="linker.cfg.macosx.nativewindow" extends="linker.cfg.macosx">
<linkerarg value="-framework" />
<linkerarg value="Cocoa" />
@@ -561,6 +565,11 @@
<include name="${rootrel.src.c}/x11/XineramaHelper.c" if="isX11"/>
</patternset>
+ <patternset id="c.src.files.windows">
+ <include name="${rootrel.generated.c}/Windows/GDI*.c" if="isWindows"/>
+ <include name="${rootrel.src.c}/windows/GDImisc.c" if="isWindows"/>
+ </patternset>
+
<echo message="Compiling @{output.lib.name}" />
<cc outtype="shared"
@@ -641,11 +650,20 @@
linker.cfg.id="${linker.cfg.id.oswin}"/>
</target>
- <target name="c.build.nativewindow.windowlib" depends="c.build.nativewindow.windowlib.x11"/>
+ <target name="c.build.nativewindow.windowlib.windows" if="isWindows">
+ <javah destdir="${src.generated.c}/Windows" classpath="${classes}" class="com.jogamp.nativewindow.impl.windows.GDI" />
+
+ <c.build c.compiler.src.files="c.src.files.windows"
+ output.lib.name="nativewindow_win32"
+ compiler.cfg.id="${compiler.cfg.id}"
+ linker.cfg.id="${linker.cfg.id.oswin}"/>
+ </target>
+ <target name="c.build.nativewindow.windowlib" depends="c.build.nativewindow.windowlib.x11, c.build.nativewindow.windowlib.windows"/>
<target name="c.manifest" if="isVC8Family">
<!-- exec mt, the Microsoft Manifest Tool, to include DLL manifests in order to resolve the location of msvcr80.dll -->
<msvc.manifest objdir="${obj.nativewindow}" dllname="nativewindow_awt" />
+ <msvc.manifest objdir="${obj.nativewindow}" dllname="nativewindow_win32" />
</target>
<target name="c.build.nativewindow" depends="c.configure,c.build.nativewindow.windowlib,c.build.nativewindow.awt">
@@ -712,6 +730,19 @@
</jar>
</target>
+ <target name="build-jars-windows" depends="setup-manifestfile">
+ <jar manifest="tempversion" destfile="${nativewindow.os.windows.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.windows}" />
+ </jar>
+ </target>
+ <target name="build-jars-windows-cdc" depends="setup-manifestfile-cdc">
+ <jar manifest="tempversion-cdc" destfile="${nativewindow.os.windows.cdc.jar}" filesonly="true">
+ <fileset dir="${classes-cdc}"
+ includes="${java.part.windows}" />
+ </jar>
+ </target>
+
<target name="build-jars-all" depends="setup-manifestfile" unless="setup.noAWT">
<jar manifest="tempversion" destfile="${nativewindow.all.jar}" filesonly="true">
<fileset dir="${classes}"
@@ -732,11 +763,11 @@
</jar>
</target>
- <target name="build-jars-javase" depends="setup-manifestfile,build-jars-awt,build-jars-x11,build-jars-all,build-jars-all-noawt">
+ <target name="build-jars-javase" depends="setup-manifestfile,build-jars-awt,build-jars-x11,build-jars-windows,build-jars-all,build-jars-all-noawt">
<jar manifest="tempversion" destfile="${nativewindow.core.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.core}"
- excludes="${java.part.awt} ${java.part.x11}"/>
+ excludes="${java.part.awt} ${java.part.x11} ${java.part.windows}"/>
</jar>
<jar manifest="tempversion" destfile="${build.nativewindow}/nativewindow-natives-${os.and.arch}.jar" filesonly="true">
<fileset dir="${obj.nativewindow}">
@@ -746,11 +777,11 @@
<delete file="tempversion"/>
</target>
- <target name="build-jars-cdc" depends="setup-manifestfile-cdc,build-jars-x11-cdc,build-jars-all-cdc">
+ <target name="build-jars-cdc" depends="setup-manifestfile-cdc,build-jars-x11-cdc,build-jars-windows-cdc,build-jars-all-cdc">
<jar manifest="tempversion-cdc" destfile="${nativewindow.core.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.core}"
- excludes="${java.part.awt} ${java.part.x11}"/>
+ excludes="${java.part.awt} ${java.part.x11} ${java.part.windows}"/>
</jar>
<jar manifest="tempversion-cdc" destfile="${build.nativewindow}/nativewindow-natives-${os.and.arch}-cdc.jar" filesonly="true">
<fileset dir="${obj.nativewindow}">
diff --git a/make/config/jogl/gdi-CustomCCode.c b/make/config/jogl/gdi-CustomCCode.c
deleted file mode 100644
index 0fe9ee628..000000000
--- a/make/config/jogl/gdi-CustomCCode.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <stdio.h>
-
-#define JOGL_DUMMY_WINDOW_NAME "__jogl_dummy_window"
-
-LRESULT CALLBACK DummyWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
- return DefWindowProc(hWnd,uMsg,wParam,lParam);
-}
-
-ATOM oglClass = 0;
-
-HWND CreateDummyWindow( int x, int y, int width, int height ) {
- HINSTANCE hInstance;
- DWORD dwExStyle;
- DWORD dwStyle;
- HWND hWnd;
-
- hInstance = GetModuleHandle(NULL);
- if( !oglClass ) {
- WNDCLASS wc;
- ZeroMemory( &wc, sizeof( wc ) );
- wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
- wc.lpfnWndProc = (WNDPROC) DummyWndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = NULL;
- wc.hCursor = NULL;
- wc.hbrBackground = NULL;
- wc.lpszMenuName = NULL;
- wc.lpszClassName = JOGL_DUMMY_WINDOW_NAME;
- if( !(oglClass = RegisterClass( &wc )) ) {
- printf( "RegisterClass Failed: %d\n", GetLastError() );
- return( 0 );
- }
- }
-
- dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
- dwStyle = WS_OVERLAPPEDWINDOW;
- if( !(hWnd=CreateWindowEx( dwExStyle,
- JOGL_DUMMY_WINDOW_NAME,
- JOGL_DUMMY_WINDOW_NAME,
- dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
- x, y, width, height,
- NULL, NULL, hInstance, NULL ) ) ) {
- return( 0 );
- }
- return( hWnd );
-}
diff --git a/make/config/jogl/gdi-win32.cfg b/make/config/jogl/gdi-win32.cfg
deleted file mode 100644
index 7d831c7b9..000000000
--- a/make/config/jogl/gdi-win32.cfg
+++ /dev/null
@@ -1,26 +0,0 @@
-# This .cfg file is used to generate the interface to the wgl routines
-# used internally by the WindowsGLContext implementation.
-JavaOutputDir gensrc/classes
-NativeOutputDir gensrc/native/jogl/Windows
-
-Package com.jogamp.opengl.impl.windows.wgl
-JavaClass GDI
-Style AllStatic
-Include gl-common.cfg
-Include gl-common-extensions.cfg
-Include gl-desktop.cfg
-
-GLHeader wingdi.h
-
-AllowNonGLExtensions true
-
-CustomCCode #define WIN32_LEAN_AND_MEAN
-CustomCCode #include <windows.h>
-CustomCCode #undef WIN32_LEAN_AND_MEAN
-
-CustomCCode #include <wingdi.h>
-CustomCCode #include <stddef.h>
-
-Include ../intptr.cfg
-
-IncludeAs CustomCCode gdi-CustomCCode.c
diff --git a/make/config/nativewindow/win32-CustomJavaCode.java b/make/config/nativewindow/win32-CustomJavaCode.java
new file mode 100644
index 000000000..cd5b00b79
--- /dev/null
+++ b/make/config/nativewindow/win32-CustomJavaCode.java
@@ -0,0 +1,24 @@
+
+ private static final long hInstance;
+
+ static {
+ NWJNILibLoader.loadNativeWindow("win32");
+ hInstance = initIDs0();
+ if( 0 == hInstance ) {
+ throw new NativeWindowException("GDI: Could not initialized native stub");
+ }
+ }
+
+ public static synchronized void initSingleton() {
+ }
+ private static native long initIDs0();
+
+ public static long getModuleHandle() {
+ return hInstance;
+ }
+
+ public static Point GetRelativeLocation(long src_win, long dest_win, int src_x, int src_y) {
+ return (Point) GetRelativeLocation0(src_win, dest_win, src_x, src_y);
+ }
+ private static native Object GetRelativeLocation0(long src_win, long dest_win, int src_x, int src_y);
+
diff --git a/make/config/nativewindow/win32-lib.cfg b/make/config/nativewindow/win32-lib.cfg
new file mode 100644
index 000000000..b7535b5e1
--- /dev/null
+++ b/make/config/nativewindow/win32-lib.cfg
@@ -0,0 +1,37 @@
+# This .cfg file is used to generate the interface to the wgl routines
+# used internally by the WindowsGLContext implementation.
+JavaOutputDir gensrc/classes
+NativeOutputDir gensrc/native/Windows
+
+Package com.jogamp.nativewindow.impl.windows
+JavaClass GDI
+Style AllStatic
+
+Opaque boolean BOOL
+Opaque long HINSTANCE
+Opaque long HANDLE
+Opaque long HBITMAP
+Opaque long HDC
+Opaque long HGDIOBJ
+Opaque long HGLRC
+Opaque long HPBUFFERARB
+Opaque long HPBUFFEREXT
+Opaque boolean BOOL
+Opaque long PROC
+Opaque long void **
+
+Import javax.media.nativewindow.util.Point
+Import javax.media.nativewindow.NativeWindowException
+Import com.jogamp.nativewindow.impl.NWJNILibLoader
+
+CustomCCode #define WIN32_LEAN_AND_MEAN
+CustomCCode #include <windows.h>
+CustomCCode #undef WIN32_LEAN_AND_MEAN
+
+CustomCCode #include <wingdi.h>
+CustomCCode #include <stddef.h>
+
+Include ../intptr.cfg
+
+IncludeAs CustomJavaCode GDI win32-CustomJavaCode.java
+
diff --git a/make/scripts/tests.bat b/make/scripts/tests.bat
index 8fee63e8c..cfb801d79 100644
--- a/make/scripts/tests.bat
+++ b/make/scripts/tests.bat
@@ -1,5 +1,5 @@
-scripts\java-win64-dbg.bat com.jogamp.newt.opengl.GLWindow
-scripts\java-win64-dbg.bat com.jogamp.test.junit.jogl.acore.TestGLProfile01NEWT
+REM scripts\java-win64-dbg.bat com.jogamp.newt.opengl.GLWindow
+REM scripts\java-win64-dbg.bat com.jogamp.test.junit.jogl.acore.TestGLProfile01NEWT
REM scripts\java-win64-dbg.bat com.jogamp.test.junit.jogl.demos.gl2.gears.newt.TestGearsNEWT -time 30000
REM scripts\java-win64-dbg.bat com.jogamp.test.junit.jogl.newt.TestSwingAWTRobotUsageBeforeJOGLInitBug411
@@ -24,3 +24,4 @@ REM scripts\java-win64-dbg.bat com.jogamp.test.junit.newt.TestScreenMode02NEWT
REM scripts\java-win64-dbg.bat com.jogamp.test.junit.newt.TestDisplayLifecycle01NEWT
REM scripts\java-win64-dbg.bat com.jogamp.test.junit.newt.parenting.TestParenting01NEWT
REM scripts\java-win64-dbg.bat com.jogamp.test.junit.newt.parenting.TestParenting02NEWT
+scripts\java-win64-dbg.bat com.jogamp.test.junit.newt.TestCloseNewtAWT
diff --git a/make/scripts/tests.sh b/make/scripts/tests.sh
index d61435d67..1def82be5 100644
--- a/make/scripts/tests.sh
+++ b/make/scripts/tests.sh
@@ -36,7 +36,7 @@ function jrun() {
#D_ARGS="-Dnewt.debug.Screen -Dnewt.debug.EDT -Djogamp.debug.Lock"
#D_ARGS="-Dnewt.debug.EDT"
#D_ARGS="-Djogl.debug=all -Dnativewindow.debug=all -Dnewt.debug=all"
- D_ARGS="-Dnewt.debug=all"
+ #D_ARGS="-Dnewt.debug=all"
X_ARGS="-Dsun.java2d.noddraw=true -Dsun.java2d.opengl=false"
java $awtarg $X_ARGS $D_ARGS $* 2>&1 | tee -a java-run.log
}
@@ -61,7 +61,7 @@ function testawt() {
#testawt com.jogamp.test.junit.jogl.demos.gl2.gears.newt.TestGearsNEWT
#testawt com.jogamp.test.junit.newt.TestDisplayLifecycle01NEWT
#testawt com.jogamp.test.junit.newt.TestDisplayLifecycle02NEWT
-testawt com.jogamp.test.junit.newt.parenting.TestParenting01NEWT
+#testawt com.jogamp.test.junit.newt.parenting.TestParenting01NEWT
#testawt com.jogamp.test.junit.newt.parenting.TestParenting02NEWT
#testawt com.jogamp.test.junit.newt.TestScreenMode00NEWT
#testnoawt com.jogamp.test.junit.newt.TestScreenMode01NEWT
@@ -97,6 +97,7 @@ testawt com.jogamp.test.junit.newt.parenting.TestParenting01NEWT
#testawt com.jogamp.test.junit.newt.parenting.TestParenting03AWT
#testawt com.jogamp.test.junit.newt.parenting.TestParenting03AWT -time 100000
#testawt com.jogamp.test.junit.newt.parenting.TestParenting03bAWT -time 100000
+testawt com.jogamp.test.junit.newt.TestCloseNewtAWT
#testawt $*
diff --git a/make/stub_includes/win32/window-system0.c b/make/stub_includes/win32/window-lib.c
index c5c5d37b9..c5c5d37b9 100644
--- a/make/stub_includes/win32/window-system0.c
+++ b/make/stub_includes/win32/window-lib.c
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsDummyWGLDrawable.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsDummyWGLDrawable.java
index 9a86f7d08..3f7028d56 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsDummyWGLDrawable.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsDummyWGLDrawable.java
@@ -40,9 +40,14 @@
package com.jogamp.opengl.impl.windows.wgl;
-import javax.media.opengl.*;
-import com.jogamp.opengl.impl.*;
+import javax.media.opengl.GLCapabilities;
+import javax.media.opengl.GLContext;
+import javax.media.opengl.GLDrawableFactory;
+import javax.media.opengl.GLProfile;
+
import com.jogamp.nativewindow.impl.ProxySurface;
+import com.jogamp.nativewindow.impl.windows.GDI;
+import com.jogamp.nativewindow.impl.windows.PIXELFORMATDESCRIPTOR;
public class WindowsDummyWGLDrawable extends WindowsWGLDrawable {
private long hwnd, hdc;
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLContext.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLContext.java
index 5ac937be8..f50b1a716 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLContext.java
@@ -40,10 +40,19 @@
package com.jogamp.opengl.impl.windows.wgl;
-import javax.media.opengl.*;
-import javax.media.nativewindow.*;
-import com.jogamp.opengl.impl.*;
+import javax.media.nativewindow.AbstractGraphicsScreen;
+import javax.media.nativewindow.DefaultGraphicsScreen;
+import javax.media.nativewindow.NativeSurface;
+import javax.media.nativewindow.NativeWindowFactory;
+import javax.media.opengl.GLContext;
+import javax.media.opengl.GLDrawableFactory;
+import javax.media.opengl.GLException;
+import javax.media.opengl.GLProfile;
+
import com.jogamp.nativewindow.impl.ProxySurface;
+import com.jogamp.nativewindow.impl.windows.GDI;
+import com.jogamp.opengl.impl.GLContextShareSet;
+
public class WindowsExternalWGLContext extends WindowsWGLContext {
private boolean firstMakeCurrent = true;
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java
index ec0bd7c7a..8f41db365 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java
@@ -40,10 +40,17 @@
package com.jogamp.opengl.impl.windows.wgl;
-import javax.media.nativewindow.*;
-import javax.media.opengl.*;
-import com.jogamp.opengl.impl.*;
+import javax.media.nativewindow.AbstractGraphicsScreen;
+import javax.media.nativewindow.DefaultGraphicsScreen;
+import javax.media.nativewindow.NativeSurface;
+import javax.media.nativewindow.NativeWindowFactory;
+import javax.media.opengl.GLContext;
+import javax.media.opengl.GLDrawableFactory;
+import javax.media.opengl.GLException;
+import javax.media.opengl.GLProfile;
+
import com.jogamp.nativewindow.impl.ProxySurface;
+import com.jogamp.nativewindow.impl.windows.GDI;
public class WindowsExternalWGLDrawable extends WindowsWGLDrawable {
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java
index f58d2f4bc..8bb781a45 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java
@@ -40,9 +40,16 @@
package com.jogamp.opengl.impl.windows.wgl;
-import javax.media.opengl.*;
-import javax.media.nativewindow.*;
-import com.jogamp.opengl.impl.*;
+import javax.media.nativewindow.NativeSurface;
+import javax.media.nativewindow.SurfaceChangeable;
+import javax.media.opengl.GLCapabilities;
+import javax.media.opengl.GLContext;
+import javax.media.opengl.GLDrawableFactory;
+import javax.media.opengl.GLException;
+
+import com.jogamp.nativewindow.impl.windows.BITMAPINFO;
+import com.jogamp.nativewindow.impl.windows.BITMAPINFOHEADER;
+import com.jogamp.nativewindow.impl.windows.GDI;
public class WindowsOffscreenWGLDrawable extends WindowsWGLDrawable {
private long origbitmap;
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java
index 0198f334c..a5631aded 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java
@@ -40,12 +40,20 @@
package com.jogamp.opengl.impl.windows.wgl;
-import javax.media.opengl.*;
-import javax.media.nativewindow.*;
-import com.jogamp.opengl.impl.*;
+import javax.media.nativewindow.NativeSurface;
+import javax.media.nativewindow.SurfaceChangeable;
+import javax.media.opengl.GL;
+import javax.media.opengl.GLCapabilities;
+import javax.media.opengl.GLContext;
+import javax.media.opengl.GLDrawableFactory;
+import javax.media.opengl.GLException;
+import javax.media.opengl.GLPbuffer;
+import javax.media.opengl.GLProfile;
+
+import com.jogamp.nativewindow.impl.windows.GDI;
+import com.jogamp.nativewindow.impl.windows.PIXELFORMATDESCRIPTOR;
public class WindowsPbufferWGLDrawable extends WindowsWGLDrawable {
- private long cachedParentHdc;
private WGLExt cachedWGLExt; // cached WGLExt instance from parent GLCanvas,
// needed to destroy pbuffer
private long buffer; // pbuffer handle
@@ -270,8 +278,7 @@ public class WindowsPbufferWGLDrawable extends WindowsWGLDrawable {
// Set up instance variables
buffer = tmpBuffer;
((SurfaceChangeable)ns).setSurfaceHandle(tmpHdc);
- cachedWGLExt = wglExt;
- cachedParentHdc = parentHdc;
+ cachedWGLExt = wglExt;
// Re-query chosen pixel format
{
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java
index 7be597dcc..529fda2c9 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java
@@ -40,13 +40,23 @@
package com.jogamp.opengl.impl.windows.wgl;
-import java.nio.*;
-import java.util.*;
-import javax.media.opengl.*;
-import javax.media.nativewindow.*;
-import com.jogamp.opengl.impl.*;
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.media.nativewindow.AbstractGraphicsConfiguration;
+import javax.media.nativewindow.AbstractGraphicsDevice;
+import javax.media.opengl.GLCapabilities;
+import javax.media.opengl.GLContext;
+import javax.media.opengl.GLException;
+
import com.jogamp.gluegen.runtime.ProcAddressTable;
import com.jogamp.gluegen.runtime.opengl.GLProcAddressResolver;
+import com.jogamp.nativewindow.impl.windows.GDI;
+import com.jogamp.opengl.impl.GLContextImpl;
+import com.jogamp.opengl.impl.GLContextShareSet;
+import com.jogamp.opengl.impl.GLDrawableImpl;
+
public class WindowsWGLContext extends GLContextImpl {
private static final Map/*<String, String>*/ functionNameMap;
@@ -86,7 +96,7 @@ public class WindowsWGLContext extends GLContextImpl {
wglGetExtensionsStringEXTAvailable=false;
wglMakeContextCurrentInitialized=false;
wglMakeContextCurrentAvailable=false;
- // no inner state wglExt=null;
+ // no inner state _wglExt=null;
wglExtProcAddressTable=null;
}
@@ -102,7 +112,7 @@ public class WindowsWGLContext extends GLContextImpl {
}
public boolean wglMakeContextCurrent(long hDrawDC, long hReadDC, long ctx) {
- WGLExt wglExt = getWGLExt();
+ WGLExt _wglExt = getWGLExt();
if (!wglMakeContextCurrentInitialized) {
wglMakeContextCurrentAvailable = isFunctionAvailable("wglMakeContextCurrent");
wglMakeContextCurrentInitialized = true;
@@ -111,7 +121,7 @@ public class WindowsWGLContext extends GLContextImpl {
}
}
if(wglMakeContextCurrentAvailable) {
- return wglExt.wglMakeContextCurrent(hDrawDC, hReadDC, ctx);
+ return _wglExt.wglMakeContextCurrent(hDrawDC, hReadDC, ctx);
}
return WGL.wglMakeCurrent(hDrawDC, ctx);
}
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawable.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawable.java
index 984708f52..bbbd93435 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawable.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawable.java
@@ -40,23 +40,23 @@
package com.jogamp.opengl.impl.windows.wgl;
-import javax.media.nativewindow.*;
-import javax.media.opengl.*;
-import com.jogamp.opengl.impl.*;
-import java.security.*;
+import java.security.AccessController;
+import javax.media.nativewindow.NativeSurface;
+import javax.media.opengl.GLDrawableFactory;
+import javax.media.opengl.GLException;
+
+import com.jogamp.nativewindow.impl.windows.GDI;
+import com.jogamp.opengl.impl.Debug;
+import com.jogamp.opengl.impl.GLDrawableImpl;
+import com.jogamp.opengl.impl.GLDynamicLookupHelper;
+
public abstract class WindowsWGLDrawable extends GLDrawableImpl {
- private static final int MAX_SET_PIXEL_FORMAT_FAIL_COUNT = 5;
private static final boolean PROFILING = Debug.isPropertyDefined("jogl.debug.GLDrawable.profiling", true, AccessController.getContext());
private static final int PROFILING_TICKS = 200;
- private int profilingLockSurfaceTicks;
- private long profilingLockSurfaceTime;
- private int profilingUnlockSurfaceTicks;
- private long profilingUnlockSurfaceTime;
private int profilingSwapBuffersTicks;
private long profilingSwapBuffersTime;
-
public WindowsWGLDrawable(GLDrawableFactory factory, NativeSurface comp, boolean realized) {
super(factory, comp, realized);
}
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawableFactory.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawableFactory.java
index 64dd0eb46..462079913 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawableFactory.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawableFactory.java
@@ -40,19 +40,39 @@
package com.jogamp.opengl.impl.windows.wgl;
-import java.nio.*;
-import java.util.*;
-import javax.media.nativewindow.*;
-import javax.media.opengl.*;
+import java.nio.Buffer;
+import java.nio.ShortBuffer;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.media.nativewindow.AbstractGraphicsDevice;
+import javax.media.nativewindow.AbstractGraphicsScreen;
+import javax.media.nativewindow.DefaultGraphicsScreen;
+import javax.media.nativewindow.NativeSurface;
+import javax.media.nativewindow.NativeWindowFactory;
+import javax.media.nativewindow.windows.WindowsGraphicsDevice;
+import javax.media.opengl.GLCapabilities;
+import javax.media.opengl.GLCapabilitiesChooser;
+import javax.media.opengl.GLContext;
+import javax.media.opengl.GLDrawable;
+import javax.media.opengl.GLException;
+import javax.media.opengl.GLProfile;
+
import com.jogamp.common.JogampRuntimeException;
-import com.jogamp.common.util.*;
-import com.jogamp.opengl.impl.*;
+import com.jogamp.common.util.ReflectionUtil;
import com.jogamp.nativewindow.impl.ProxySurface;
-import javax.media.nativewindow.windows.WindowsGraphicsDevice;
+import com.jogamp.nativewindow.impl.windows.GDI;
+import com.jogamp.opengl.impl.Debug;
+import com.jogamp.opengl.impl.DesktopGLDynamicLookupHelper;
+import com.jogamp.opengl.impl.GLDrawableFactoryImpl;
+import com.jogamp.opengl.impl.GLDrawableImpl;
+import com.jogamp.opengl.impl.GLDynamicLookupHelper;
public class WindowsWGLDrawableFactory extends GLDrawableFactoryImpl {
- private static final boolean VERBOSE = Debug.verbose();
-
private static final DesktopGLDynamicLookupHelper windowsWGLDynamicLookupHelper;
static {
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java
index 619034da4..6c006577e 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java
@@ -33,9 +33,22 @@
package com.jogamp.opengl.impl.windows.wgl;
-import javax.media.nativewindow.*;
-import javax.media.opengl.*;
-import com.jogamp.opengl.impl.*;
+import javax.media.nativewindow.AbstractGraphicsScreen;
+import javax.media.nativewindow.DefaultGraphicsConfiguration;
+import javax.media.nativewindow.NativeSurface;
+import javax.media.opengl.DefaultGLCapabilitiesChooser;
+import javax.media.opengl.GL;
+import javax.media.opengl.GLCapabilities;
+import javax.media.opengl.GLCapabilitiesChooser;
+import javax.media.opengl.GLDrawable;
+import javax.media.opengl.GLDrawableFactory;
+import javax.media.opengl.GLException;
+import javax.media.opengl.GLPbuffer;
+import javax.media.opengl.GLProfile;
+
+import com.jogamp.nativewindow.impl.windows.GDI;
+import com.jogamp.nativewindow.impl.windows.PIXELFORMATDESCRIPTOR;
+import com.jogamp.opengl.impl.GLContextImpl;
public class WindowsWGLGraphicsConfiguration extends DefaultGraphicsConfiguration implements Cloneable {
// Keep this under the same debug flag as the drawable factory for convenience
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java
index 372630446..1d8f14d94 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java
@@ -33,12 +33,24 @@
package com.jogamp.opengl.impl.windows.wgl;
-import javax.media.nativewindow.*;
-import javax.media.nativewindow.windows.*;
-import com.jogamp.nativewindow.impl.*;
+import javax.media.nativewindow.AbstractGraphicsConfiguration;
+import javax.media.nativewindow.AbstractGraphicsDevice;
+import javax.media.nativewindow.AbstractGraphicsScreen;
+import javax.media.nativewindow.Capabilities;
+import javax.media.nativewindow.CapabilitiesChooser;
+import javax.media.nativewindow.DefaultGraphicsScreen;
+import javax.media.nativewindow.GraphicsConfigurationFactory;
+import javax.media.nativewindow.NativeSurface;
+import javax.media.nativewindow.NativeWindowException;
+import javax.media.nativewindow.NativeWindowFactory;
+import javax.media.opengl.GLCapabilities;
+import javax.media.opengl.GLCapabilitiesChooser;
+import javax.media.opengl.GLDrawableFactory;
+import javax.media.opengl.GLException;
+import javax.media.opengl.GLProfile;
-import javax.media.opengl.*;
-import com.jogamp.opengl.impl.*;
+import com.jogamp.nativewindow.impl.windows.GDI;
+import com.jogamp.nativewindow.impl.windows.PIXELFORMATDESCRIPTOR;
/** Subclass of GraphicsConfigurationFactory used when non-AWT tookits
are used on Windows platforms. Toolkits will likely need to delegate
diff --git a/src/nativewindow/native/windows/GDImisc.c b/src/nativewindow/native/windows/GDImisc.c
new file mode 100644
index 000000000..3c1001115
--- /dev/null
+++ b/src/nativewindow/native/windows/GDImisc.c
@@ -0,0 +1,152 @@
+#include <jni.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+#include <wingdi.h>
+#include <stddef.h>
+
+#ifdef _WIN32
+ #ifdef _MSC_VER
+ /* This typedef is apparently needed for Microsoft compilers before VC8,
+ and on Windows CE */
+ #if (_MSC_VER < 1400) || defined(UNDER_CE)
+ #ifdef _WIN64
+ typedef long long intptr_t;
+ #else
+ typedef int intptr_t;
+ #endif
+ #endif
+ #else
+ #include <inttypes.h>
+ #endif
+#else
+ #include <inttypes.h>
+#endif
+
+#include <stdio.h>
+
+#include "com_jogamp_nativewindow_impl_windows_GDI.h"
+
+// #define VERBOSE_ON 1
+
+#ifdef VERBOSE_ON
+ #define DBG_PRINT(args...) fprintf(stderr, args);
+#else
+ #define DBG_PRINT(args...)
+#endif
+
+static void _FatalError(JNIEnv *env, const char* msg, ...)
+{
+ char buffer[512];
+ va_list ap;
+
+ va_start(ap, msg);
+ vsnprintf(buffer, sizeof(buffer), msg, ap);
+ va_end(ap);
+
+ fprintf(stderr, "%s\n", buffer);
+ (*env)->FatalError(env, buffer);
+}
+
+static const char * const ClazzNamePoint = "javax/media/nativewindow/util/Point";
+static const char * const ClazzAnyCstrName = "<init>";
+static const char * const ClazzNamePointCstrSignature = "(II)V";
+
+static jclass pointClz = NULL;
+static jmethodID pointCstr = NULL;
+
+#define NATIVEWINDOW_DUMMY_WINDOW_NAME "__nativewindow_dummy_window"
+static ATOM nativewindowClass = 0;
+
+LRESULT CALLBACK DummyWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
+ return DefWindowProc(hWnd,uMsg,wParam,lParam);
+}
+
+HWND CreateDummyWindow(HINSTANCE hInstance, int x, int y, int width, int height ) {
+ DWORD dwExStyle;
+ DWORD dwStyle;
+ HWND hWnd;
+
+ dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
+ dwStyle = WS_OVERLAPPEDWINDOW;
+ if( !(hWnd=CreateWindowEx( dwExStyle,
+ NATIVEWINDOW_DUMMY_WINDOW_NAME,
+ NATIVEWINDOW_DUMMY_WINDOW_NAME,
+ dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
+ x, y, width, height,
+ NULL, NULL, hInstance, NULL ) ) ) {
+ return( 0 );
+ }
+ return( hWnd );
+}
+
+/*
+ * Class: com_jogamp_nativewindow_impl_windows_GDI
+ * Method: initIDs0
+ * Signature: ()Z
+ */
+JNIEXPORT jlong JNICALL Java_com_jogamp_nativewindow_impl_windows_GDI_initIDs0
+ (JNIEnv *env, jclass clazz)
+{
+ if(NULL==pointClz) {
+ jclass c = (*env)->FindClass(env, ClazzNamePoint);
+ if(NULL==c) {
+ _FatalError(env, "FatalError com_jogamp_nativewindow_impl_windows_GDI: can't find %s", ClazzNamePoint);
+ }
+ pointClz = (jclass)(*env)->NewGlobalRef(env, c);
+ (*env)->DeleteLocalRef(env, c);
+ if(NULL==pointClz) {
+ _FatalError(env, "FatalError com_jogamp_nativewindow_impl_windows_GDI: can't use %s", ClazzNamePoint);
+ }
+ pointCstr = (*env)->GetMethodID(env, pointClz, ClazzAnyCstrName, ClazzNamePointCstrSignature);
+ if(NULL==pointCstr) {
+ _FatalError(env, "FatalError com_jogamp_nativewindow_impl_windows_GDI: can't fetch %s.%s %s",
+ ClazzNamePoint, ClazzAnyCstrName, ClazzNamePointCstrSignature);
+ }
+ }
+ HINSTANCE hInstance = GetModuleHandle(NULL);
+ if( !nativewindowClass ) {
+ WNDCLASS wc;
+ ZeroMemory( &wc, sizeof( wc ) );
+ wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
+ wc.lpfnWndProc = (WNDPROC) DummyWndProc;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 0;
+ wc.hInstance = hInstance;
+ wc.hIcon = NULL;
+ wc.hCursor = NULL;
+ wc.hbrBackground = NULL;
+ wc.lpszMenuName = NULL;
+ wc.lpszClassName = NATIVEWINDOW_DUMMY_WINDOW_NAME;
+ if( !(nativewindowClass = RegisterClass( &wc )) ) {
+ _FatalError(env, "FatalError com_jogamp_nativewindow_impl_windows_GDI: RegisterClass Failed: %d", GetLastError() );
+ }
+ }
+ return (jlong) hInstance;
+}
+
+/*
+ * Class: com_jogamp_nativewindow_impl_windows_GDI
+ * Method: GetRelativeLocation0
+ * Signature: (JJII)Ljavax/media/nativewindow/util/Point;
+ */
+JNIEXPORT jobject JNICALL Java_com_jogamp_nativewindow_impl_windows_GDI_GetRelativeLocation0
+ (JNIEnv *env, jclass unused, jlong jsrc_win, jlong jdest_win, jint src_x, jint src_y)
+{
+ HWND src_win = (HWND) (intptr_t) jsrc_win;
+ HWND dest_win = (HWND) (intptr_t) jdest_win;
+ POINT dest = { src_x, src_y } ;
+ int res;
+
+ res = MapWindowPoints(src_win, dest_win, &dest, 1);
+
+ DBG_PRINT("*** WindowsWindow: getRelativeLocation0: %p %d/%d -> %p %d/%d - ok: %d\n",
+ (void*)src_win, src_x, src_y, (void*)dest_win, (int)dest.x, (int)dest.y, res);
+
+ return (*env)->NewObject(env, pointClz, pointCstr, (jint)dest.x, (jint)dest.y);
+}
+
diff --git a/src/newt/classes/com/jogamp/newt/impl/windows/WindowsWindow.java b/src/newt/classes/com/jogamp/newt/impl/windows/WindowsWindow.java
index daa09b034..1691e4bf0 100644
--- a/src/newt/classes/com/jogamp/newt/impl/windows/WindowsWindow.java
+++ b/src/newt/classes/com/jogamp/newt/impl/windows/WindowsWindow.java
@@ -34,6 +34,7 @@
package com.jogamp.newt.impl.windows;
+import com.jogamp.nativewindow.impl.windows.GDI;
import javax.media.nativewindow.*;
import com.jogamp.newt.impl.WindowImpl;
import javax.media.nativewindow.util.Insets;
@@ -168,7 +169,7 @@ public class WindowsWindow extends WindowImpl {
}
protected Point getLocationOnScreenImpl(int x, int y) {
- return (Point) getRelativeLocation0( getWindowHandle(), 0 /*root win*/, x, y);
+ return (Point) GDI.GetRelativeLocation( getWindowHandle(), 0 /*root win*/, x, y);
}
//----------------------------------------------------------------------
@@ -190,7 +191,6 @@ public class WindowsWindow extends WindowImpl {
boolean parentChange, int fullScreenChange, int decorationChange);
private static native void setTitle0(long windowHandle, String title);
private native void requestFocus0(long windowHandle, boolean force);
- private native Object getRelativeLocation0(long src_win, long dest_win, int src_x, int src_y);
private void insetsChanged(int left, int top, int right, int bottom) {
if (left != -1 && top != -1 && right != -1 && bottom != -1) {
diff --git a/src/newt/native/WindowsWindow.c b/src/newt/native/WindowsWindow.c
index 46d710eda..b282ec9b2 100644
--- a/src/newt/native/WindowsWindow.c
+++ b/src/newt/native/WindowsWindow.c
@@ -118,13 +118,6 @@
#define STD_PRINT(...) fprintf(stderr, __VA_ARGS__); fflush(stderr)
-static const char * const ClazzNamePoint = "javax/media/nativewindow/util/Point";
-static const char * const ClazzAnyCstrName = "<init>";
-static const char * const ClazzNamePointCstrSignature = "(II)V";
-
-static jclass pointClz = NULL;
-static jmethodID pointCstr = NULL;
-
static jmethodID insetsChangedID = NULL;
static jmethodID sizeChangedID = NULL;
static jmethodID positionChangedID = NULL;
@@ -1333,23 +1326,6 @@ JNIEXPORT jboolean JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_initI
{
NewtCommon_init(env);
- if(NULL==pointClz) {
- jclass c = (*env)->FindClass(env, ClazzNamePoint);
- if(NULL==c) {
- NewtCommon_FatalError(env, "NEWT WindowsWindows: can't find %s", ClazzNamePoint);
- }
- pointClz = (jclass)(*env)->NewGlobalRef(env, c);
- (*env)->DeleteLocalRef(env, c);
- if(NULL==pointClz) {
- NewtCommon_FatalError(env, "NEWT WindowsWindows: can't use %s", ClazzNamePoint);
- }
- pointCstr = (*env)->GetMethodID(env, pointClz, ClazzAnyCstrName, ClazzNamePointCstrSignature);
- if(NULL==pointCstr) {
- NewtCommon_FatalError(env, "NEWT WindowsWindows: can't fetch %s.%s %s",
- ClazzNamePoint, ClazzAnyCstrName, ClazzNamePointCstrSignature);
- }
- }
-
insetsChangedID = (*env)->GetMethodID(env, clazz, "insetsChanged", "(IIII)V");
sizeChangedID = (*env)->GetMethodID(env, clazz, "sizeChanged", "(IIZ)V");
positionChangedID = (*env)->GetMethodID(env, clazz, "positionChanged", "(II)V");
@@ -1708,24 +1684,4 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_requestFo
NewtWindows_requestFocus ( env, obj, (HWND) (intptr_t) window, force) ;
}
-/*
- * Class: com_jogamp_newt_impl_windows_WindowsWindows
- * Method: getRelativeLocation0
- * Signature: (JJII)Ljavax/media/nativewindow/util/Point;
- */
-JNIEXPORT jobject JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_getRelativeLocation0
- (JNIEnv *env, jobject obj, jlong jsrc_win, jlong jdest_win, jint src_x, jint src_y)
-{
- HWND src_win = (HWND) (intptr_t) jsrc_win;
- HWND dest_win = (HWND) (intptr_t) jdest_win;
- POINT dest = { src_x, src_y } ;
- int res;
-
- res = MapWindowPoints(src_win, dest_win, &dest, 1);
-
- DBG_PRINT("*** WindowsWindow: getRelativeLocation0: %p %d/%d -> %p %d/%d - ok: %d\n",
- (void*)src_win, src_x, src_y, (void*)dest_win, (int)dest.x, (int)dest.y, res);
-
- return (*env)->NewObject(env, pointClz, pointCstr, (jint)dest.x, (jint)dest.y);
-}