aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2008-06-30 20:12:47 +0000
committerKenneth Russel <[email protected]>2008-06-30 20:12:47 +0000
commit252efbfd61fb62883df028cba5743e458a5b18c7 (patch)
treea5f5d87bca24309a4c6c5ac48497a30a70cd442c
parent7be2d71e458dd37789ceac43dede4b308eff45c2 (diff)
Refactored more C compiler setup into gluegen-cpptasks.xml to make it
easier to build native sources via Ant. Provided new gluegen.cpptasks.setup.compiler target which sets up platform-independent compiler and linker IDs and other properties which can be used in other projects' build files. Refactored JOGL build to use some of these new properties and eliminate duplication; more code savings possible. Added new GLWindow class to Newt implementing GLAutoDrawable to increase code sharing, and supporting making OpenGL calls inside of EventListener callbacks. Moved repaint() method from GLAutoDrawable to AWTGLAutoDrawable. Added WindowEvent and WindowListener interfaces to Newt, currently implemented on Windows and AWT backends (X11 backend would need to support and watch for window resizes -- FIXME added). Refactored common functionality into Newt Event class. Renumbered event IDs to avoid collisions. Fixed potential problems with removing event listeners inside of EventListener callbacks. git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1702 232f8b59-042b-4e1e-8c03-345bb8c30851
-rw-r--r--make/build.xml199
-rw-r--r--make/jogl.properties16
-rw-r--r--make/validate-properties.xml21
-rw-r--r--src/classes/com/sun/javafx/newt/Event.java77
-rw-r--r--src/classes/com/sun/javafx/newt/GLWindow.java389
-rw-r--r--src/classes/com/sun/javafx/newt/InputEvent.java23
-rw-r--r--src/classes/com/sun/javafx/newt/KeyEvent.java21
-rw-r--r--src/classes/com/sun/javafx/newt/MouseEvent.java30
-rwxr-xr-xsrc/classes/com/sun/javafx/newt/Window.java92
-rw-r--r--src/classes/com/sun/javafx/newt/WindowEvent.java59
-rw-r--r--src/classes/com/sun/javafx/newt/WindowListener.java39
-rw-r--r--src/classes/com/sun/javafx/newt/awt/AWTWindow.java122
-rwxr-xr-xsrc/classes/com/sun/javafx/newt/windows/WindowsWindow.java2
-rwxr-xr-xsrc/classes/com/sun/javafx/newt/x11/X11Window.java2
-rw-r--r--src/classes/javax/media/opengl/GLAutoDrawable.java4
-rw-r--r--src/classes/javax/media/opengl/GLDrawableFactory.java4
-rw-r--r--src/classes/javax/media/opengl/awt/AWTGLAutoDrawable.java3
-rwxr-xr-xsrc/native/newt/X11Window.c2
18 files changed, 816 insertions, 289 deletions
diff --git a/make/build.xml b/make/build.xml
index b35641e43..5dce7d8ae 100644
--- a/make/build.xml
+++ b/make/build.xml
@@ -322,22 +322,9 @@
<!-- ================================================================== -->
<!--
- - Set up java.home.dir appropriately on all platforms.
- -->
- <target name="setup.java.home.dir.nonmacosx" depends="load.user.properties" unless="isOSX">
- <!-- java home dir is up one directory as java.home points to '<java-install-dir>/jre' -->
- <property name="java.home.dir" value="${java.home}/.." />
- </target>
- <target name="setup.java.home.dir.macosx" depends="load.user.properties" if="isOSX">
- <property name="java.home.dir" value="/System/Library/Frameworks/JavaVM.framework/Home" />
- </target>
- <target name="setup.java.home.dir" depends="setup.java.home.dir.nonmacosx,setup.java.home.dir.macosx"/>
-
- <!-- ================================================================== -->
- <!--
- Declare all paths and user defined variables.
-->
- <target name="declare.common" description="Declare properties" depends="setup.java.home.dir, gluegen.cpptasks.detect.compiler">
+ <target name="declare.common" description="Declare properties" depends="load.user.properties">
<!-- The location and name of the configuration ANT file that will
- validate to ensure that all user-define variables are set. -->
<property name="validate.user.properties" value="${make}/validate-properties.xml" />
@@ -427,35 +414,6 @@
<include name="cg-common-CustomJavaCode.java" />
</fileset>
- <property name="java.includes.dir" value="${java.home.dir}/include" /> <!-- NOTE: this MUST be relative for FileSet -->
- <property name="java.includes.dir.win32" value="${java.includes.dir}/win32" />
- <property name="java.includes.dir.linux" value="${java.includes.dir}/linux" />
- <property name="java.includes.dir.solaris" value="${java.includes.dir}/solaris" />
- <property name="java.includes.dir.macosx" value="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers" />
- <property name="java.includes.dir.freebsd" value="${java.includes.dir}/freebsd" />
- <property name="java.includes.dir.hpux" value="${java.includes.dir}/hp-ux" />
- <property name="java.lib.dir.win32" value="${java.home.dir}/lib" />
- <property name="java.lib.dir.linux" value="${java.home.dir}/jre/lib/i386" />
- <property name="java.lib.dir.linux.amd64" value="${java.home.dir}/jre/lib/amd64" />
- <property name="java.lib.dir.linux.ia64" value="${java.home.dir}/jre/lib/ia64" />
- <property name="java.lib.dir.hpux" value="${java.home.dir}/jre/lib/PA_RISC2.0" />
- <condition property="cpu" value="sparc">
- <os name="SunOS" arch="sparc" />
- </condition>
- <condition property="cpu" value="sparcv9">
- <os name="SunOS" arch="sparcv9" />
- </condition>
- <condition property="cpu" value="i386">
- <os name="SunOS" arch="x86" />
- </condition>
-
- <condition property="cpu" value="amd64">
- <os name="SunOS" arch="amd64" />
- </condition>
-
- <property name="java.lib.dir.solaris" value="${java.home.dir}/jre/lib/${cpu}" />
- <property name="java.lib.dir.macosx" value="/System/Library/Frameworks/JavaVM.framework/Libraries" />
-
<!-- Create the classpath that includes GlueGen and
- ANTLR. This requires the user-defined "antlr.jar"
- property. -->
@@ -531,34 +489,10 @@
<!--
- Platform specific declares - COMPILER
-->
- <target name="declare.win32.vc6" if="isVC6">
- <echo message="Win32.VC6" />
- <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
- <property name="linker.cfg.id.base" value="linker.cfg.win32.msvc" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.win32.msvc.jogl" />
- <property name="linker.cfg.id.gl2" value="linker.cfg.win32.msvc.jogl" />
- </target>
-
- <target name="declare.win32.vc7" if="isVC7">
- <echo message="Win32.VC7" />
- <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
- <property name="linker.cfg.id.base" value="linker.cfg.win32.msvc" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.win32.msvc.jogl" />
- <property name="linker.cfg.id.gl2" value="linker.cfg.win32.msvc.jogl" />
- </target>
-
- <target name="declare.win32.vc8" if="isVC8">
- <echo message="Win32.VC8" />
- <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
- <property name="linker.cfg.id.base" value="linker.cfg.win32.msvc" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.win32.msvc.jogl" />
- <property name="linker.cfg.id.gl2" value="linker.cfg.win32.msvc.jogl" />
- </target>
-
- <target name="declare.win32.vc8_x64" if="isVC8_X64">
- <echo message="Win32.VC8_X64" />
+ <target name="declare.win32.vc" if="isVCFamily">
+ <echo message="Win32.VC" />
<property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
- <property name="linker.cfg.id.base" value="linker.cfg.win32.msvc" />
+ <property name="linker.cfg.id.core" value="linker.cfg.win32.msvc" />
<property name="linker.cfg.id.oswin" value="linker.cfg.win32.msvc.jogl" />
<property name="linker.cfg.id.gl2" value="linker.cfg.win32.msvc.jogl" />
</target>
@@ -566,40 +500,31 @@
<target name="declare.win32.mingw" if="isMingW">
<echo message="Win32.MingW" />
<property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" />
- <property name="linker.cfg.id.base" value="linker.cfg.win32.mingw" />
+ <property name="linker.cfg.id.core" value="linker.cfg.win32.mingw" />
<property name="linker.cfg.id.oswin" value="linker.cfg.win32.mingw.jogl" />
<property name="linker.cfg.id.gl2" value="linker.cfg.win32.mingw.jogl" />
</target>
<target name="declare.linux.x86" if="isLinuxX86">
<echo message="Linux.x86" />
- <property name="java.includes.dir.platform" value="${java.includes.dir.linux}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.linux}" />
-
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
- <property name="linker.cfg.id.base" value="linker.cfg.linux" />
+ <property name="linker.cfg.id.core" value="linker.cfg.linux" />
<property name="linker.cfg.id.oswin" value="linker.cfg.linux.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" />
</target>
<target name="declare.linux.amd64" if="isLinuxAMD64">
<echo message="Linux.AMD64" />
- <property name="java.includes.dir.platform" value="${java.includes.dir.linux}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.linux.amd64}" />
-
<property name="compiler.cfg.id" value="compiler.cfg.linux.amd64" />
- <property name="linker.cfg.id.base" value="linker.cfg.linux.amd64" />
+ <property name="linker.cfg.id.core" value="linker.cfg.linux.amd64" />
<property name="linker.cfg.id.oswin" value="linker.cfg.linux.amd64.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.linux.amd64.jogl.gl2" />
</target>
<target name="declare.linux.ia64" if="isLinuxIA64">
<echo message="Linux.IA64" />
- <property name="java.includes.dir.platform" value="${java.includes.dir.linux}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.linux.ia64}" />
-
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
- <property name="linker.cfg.id.base" value="linker.cfg.linux" />
+ <property name="linker.cfg.id.core" value="linker.cfg.linux" />
<property name="linker.cfg.id.oswin" value="linker.cfg.linux.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" />
</target>
@@ -608,11 +533,8 @@
<target name="declare.solaris32" depends="declare.x11" if="isSolaris32Bit">
<echo message="Solaris" />
- <property name="java.includes.dir.platform" value="${java.includes.dir.solaris}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.solaris}" />
-
<property name="compiler.cfg.id" value="compiler.cfg.solaris" />
- <property name="linker.cfg.id.base" value="linker.cfg.solaris" />
+ <property name="linker.cfg.id.core" value="linker.cfg.solaris" />
<property name="linker.cfg.id.oswin" value="linker.cfg.solaris.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.solaris.jogl.gl2" />
</target>
@@ -620,11 +542,8 @@
<target name="declare.solaris.sparcv9" depends="declare.x11" if="isSolarisSparcv9">
<echo message="SolarisSparcv9" />
- <property name="java.includes.dir.platform" value="${java.includes.dir.solaris}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.solaris}" />
-
<property name="compiler.cfg.id" value="compiler.cfg.solaris.sparcv9" />
- <property name="linker.cfg.id.base" value="linker.cfg.solaris.sparcv9" />
+ <property name="linker.cfg.id.core" value="linker.cfg.solaris.sparcv9" />
<property name="linker.cfg.id.oswin" value="linker.cfg.solaris.sparcv9.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.solaris.sparcv9.jogl.gl2" />
</target>
@@ -632,50 +551,35 @@
<target name="declare.solaris.amd64" depends="declare.x11" if="isSolarisAMD64">
<echo message="SolarisAMD64" />
- <property name="java.includes.dir.platform" value="${java.includes.dir.solaris}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.solaris}" />
-
<property name="compiler.cfg.id" value="compiler.cfg.solaris.amd64" />
- <property name="linker.cfg.id.base" value="linker.cfg.solaris.amd64" />
+ <property name="linker.cfg.id.core" value="linker.cfg.solaris.amd64" />
<property name="linker.cfg.id.oswin" value="linker.cfg.solaris.amd64.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.solaris.amd64.jogl.gl2" />
</target>
<target name="declare.freebsd" depends="declare.x11" if="isFreeBSD">
<echo message="FreeBSD" />
- <property name="java.includes.dir.platform" value="${java.includes.dir.freebsd}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.linux}" />
-
<property name="compiler.cfg.id" value="compiler.cfg.freebsd.jogl" />
- <property name="linker.cfg.id.base" value="linker.cfg.linux" />
+ <property name="linker.cfg.id.core" value="linker.cfg.linux" />
<property name="linker.cfg.id.oswin" value="linker.cfg.linux.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" />
</target>
<target name="declare.hpux" depends="declare.x11" if="isHPUX">
<echo message="HP-UX" />
- <property name="java.includes.dir.platform" value="${java.includes.dir.hpux}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.hpux}" />
<property name="compiler.cfg.id" value="compiler.cfg.hpux" />
- <property name="linker.cfg.id.base" value="linker.cfg.hpux" />
+ <property name="linker.cfg.id.core" value="linker.cfg.hpux" />
<property name="linker.cfg.id.oswin" value="linker.cfg.hpux.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.hpux.jogl.gl2" />
</target>
- <target name="declare.win32" depends="declare.win32.vc6,declare.win32.vc7,declare.win32.vc8,declare.win32.vc8_x64,declare.win32.mingw" if="isWindows">
- <property name="java.includes.dir.platform" value="${java.includes.dir.win32}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.win32}" />
- </target>
+ <target name="declare.win32" depends="declare.win32.vc,declare.win32.mingw" if="isWindows" />
- <target name="declare.x11" depends="init" if="isX11">
- </target>
+ <target name="declare.x11" depends="init" if="isX11" />
<target name="declare.macosx" depends="init" if="isOSX">
- <property name="java.includes.dir.platform" value="${java.includes.dir.macosx}" />
- <property name="java.lib.dir.platform" value="${java.lib.dir.macosx}" />
-
<property name="compiler.cfg.id" value="compiler.cfg.macosx" />
- <property name="linker.cfg.id.base" value="linker.cfg.macosx" />
+ <property name="linker.cfg.id.core" value="linker.cfg.macosx" />
<property name="linker.cfg.id.oswin" value="linker.cfg.macosx.jogl" />
<property name="linker.cfg.id.gl2" value="linker.cfg.macosx.jogl" />
</target>
@@ -906,6 +810,7 @@
<target name="java.generate.window.system.es" if="window.es.cfg" unless="jogl.noes">
<echo message="Generating EGL implementation class" />
+ <dirset id="stub.includes.fileset.platform" dir="." includes="${stub.includes.dir}/${window.es.system}/**" />
<gluegen src="${stub.includes.dir}/${window.es.system}/window-system.c"
config="${window.es.cfg}"
includeRefid="stub.includes.fileset.platform"
@@ -950,12 +855,12 @@
<target name="java.generate.BufferUtil" depends="java.generate.BufferUtil.javase, java.generate.BufferUtil.javame_cdc_fp" />
<target name="java.generate.gl.platforms" >
- <dirset id="stub.includes.fileset.platform" dir="." includes="${stub.includes.dir}/${window.os.system}/** ${stub.includes.dir}/${window.es.system}/** ${stub.includes.dir}/common/** ${stub.includes.dir}/opengl/**" />
+ <dirset id="stub.includes.fileset.platform" dir="." includes="${stub.includes.dir}/${window.os.system}/** ${stub.includes.dir}/${window.es.system}/** ${stub.includes.dir}/common/** ${stub.includes.dir}/opengl/**" />
- <antcall target="java.generate.platform.glext" inheritRefs="true" />
- <antcall target="java.generate.window.lib" inheritRefs="true" />
- <antcall target="java.generate.window.system.os" inheritRefs="true" />
- <antcall target="java.generate.jawt" inheritRefs="true" />
+ <antcall target="java.generate.platform.glext" inheritRefs="true" />
+ <antcall target="java.generate.window.lib" inheritRefs="true" />
+ <antcall target="java.generate.window.system.os" inheritRefs="true" />
+ <antcall target="java.generate.jawt" inheritRefs="true" />
</target>
<!--
@@ -977,7 +882,6 @@
<antcall target="java.generate.gl.all" inheritRefs="true" />
<!--antcall target="java.generate.gl.nsig" inheritRefs="true" /-->
- <echo message="Generating EGL implementation class" />
<antcall target="java.generate.window.system.es" inheritRefs="true" />
<echo message="Generating platform-specifics: X11" />
@@ -1202,7 +1106,7 @@
- Compile the native C code for JOGL (and optionally the Cg binding).
-->
- <target name="c.configure" depends="gluegen.cpptasks.configure.compiler" unless="jogl.compiler.present">
+ <target name="c.configure" depends="gluegen.cpptasks.setup.compiler" unless="jogl.compiler.present">
<!-- compiler configuration -->
<!-- Note that we can use the base setups in the gluegen-cpptasks for most of these -->
@@ -1283,6 +1187,14 @@
</linker>
</target>
+ <target name="rename.mingw.dll" if="isMingW">
+ <move file="${src}" tofile="${dest}" />
+ </target>
+
+ <target name="rename.dylib" if="isOSX">
+ <move file="${src}" tofile="${dest}" />
+ </target>
+
<target name="c.build" depends="c.configure">
<fail message="Requires '${c.compiler.src.files}'" unless="c.compiler.src.files"/>
<fail message="Requires '${compiler.cfg.id}'" unless="compiler.cfg.id"/>
@@ -1427,31 +1339,23 @@
<syslibset dir="${java.lib.dir.platform}/server" libs="jvm" if="c.compiler.needs-libjvm"/>
</linker>
</cc>
- </target>
- <target name="c.rename.jogl.libs.mingw" if="isMingW">
<!-- FIXME: this is a hack; the cpptask should have an option to change the
- suffix or at least understand the override from .so to .dll -->
- <move file="${obj}/libjogl_awt.so" tofile="${obj}/jogl_awt.dll" />
- <move file="${obj}/lib_newt.so" tofile="${obj}/newt.dll" />
- <move file="${obj}/libjogl_gl2.so" tofile="${obj}/jogl_gl2.dll" />
- <move file="${obj}/libjogl_es2.so" tofile="${obj}/jogl_es2.dll" />
- <move file="${obj}/libjogl_es1.so" tofile="${obj}/jogl_es1.dll" />
- <move file="${obj}/libjogl_cg.so" tofile="${obj}/jogl_cg.dll" failonerror="false" />
- </target>
+ suffix or at least understand the override from dylib to jnilib -->
+ <antcall target="rename.dylib" inheritRefs="true">
+ <param name="src" value="${build}/obj/lib${output.lib.name}.dylib" />
+ <param name="dest" value="${build}/obj/lib${output.lib.name}.jnilib" />
+ </antcall>
- <target name="c.rename.jogl.libs.macosx" if="isOSX">
<!-- FIXME: this is a hack; the cpptask should have an option to change the
suffix or at least understand the override from dylib to jnilib -->
- <move file="${obj}/libjogl_awt.dylib" tofile="${obj}/libjogl_awt.jnilib" />
- <move file="${obj}/libjogl_gl2.dylib" tofile="${obj}/libjogl_gl2.jnilib" />
- <move file="${obj}/libjogl_es2.dylib" tofile="${obj}/libjogl_es2.jnilib" />
- <move file="${obj}/libjogl_es1.dylib" tofile="${obj}/libjogl_es1.jnilib" />
- <move file="${obj}/libjogl_cg.dylib" tofile="${obj}/libjogl_cg.jnilib" failonerror="false" />
- <antcall target="c.fixup.jawt.version.macosx" inheritrefs="true" />
- </target>
+ <antcall target="rename.mingw.dll" inheritRefs="true">
+ <param name="src" value="${build}/lib${output.lib.name}.so" />
+ <param name="dest" value="${build}/${output.lib.name}.dll" />
+ </antcall>
+ </target>
- <target name="c.fixup.jawt.version.macosx" if="macosxfat">
+ <target name="c.fixup.jawt.version.macosx" if="isOSX">
<!-- Edit the link to the JAWT version in the resulting jnilib
file; this isn't strictly needed but seems to allow the
universal binaries to work on 10.3 machines as well, which
@@ -1513,7 +1417,7 @@
<param name="c.compiler.src.files" value="c.src.files.jogl.es2"/>
<param name="c.compiler.use-es2" value="true"/>
<param name="output.lib.name" value="jogl_es2"/>
- <param name="linker.cfg.id" value="${linker.cfg.id.base}"/>
+ <param name="linker.cfg.id" value="${linker.cfg.id.core}"/>
</antcall>
</target>
@@ -1522,7 +1426,7 @@
<param name="c.compiler.src.files" value="c.src.files.jogl.es1"/>
<param name="c.compiler.use-es1" value="true"/>
<param name="output.lib.name" value="jogl_es1"/>
- <param name="linker.cfg.id" value="${linker.cfg.id.base}"/>
+ <param name="linker.cfg.id" value="${linker.cfg.id.core}"/>
</antcall>
</target>
@@ -1559,8 +1463,7 @@
</target>
<target name="c.build.jogl" depends="c.build.jogl.prepare,c.build.jogl.awt,c.build.newt,c.build.jogl.gl2,c.build.jogl.es2,c.build.jogl.es1,c.build.jogl.cg">
- <antcall target="c.rename.jogl.libs.mingw" inheritRefs="true" />
- <antcall target="c.rename.jogl.libs.macosx" inheritRefs="true" />
+ <antcall target="c.fixup.jawt.version.macosx" inheritrefs="true" />
<antcall target="c.manifest" inheritRefs="true" />
</target>
@@ -1698,7 +1601,7 @@
- on the platform specific build targets. To circumvent any
- errors, ensure that the source is built first.
-->
- <target name="javadoc.nocg" depends="setup.java.home.dir,init" unless="jogl.cg">
+ <target name="javadoc.nocg" depends="load.user.properties,init" unless="jogl.cg">
<!-- Build the general Javadoc -->
<javadoc packagenames="${javadoc.packagenames}"
excludepackagenames="${java.excludes.javadoc.packagenames}"
@@ -1714,7 +1617,7 @@
</target>
<!-- Same as above but with Cg directories added -->
- <target name="javadoc.cg" depends="setup.java.home.dir,init" if="jogl.cg">
+ <target name="javadoc.cg" depends="load.user.properties,init" if="jogl.cg">
<!-- Build the general Javadoc -->
<javadoc packagenames="${javadoc.packagenames},com.sun.opengl.cg"
excludepackagenames="${java.excludes.javadoc.packagenames}"
@@ -1731,7 +1634,7 @@
<target name="javadoc" depends="javadoc.nocg,javadoc.cg" />
- <target name="javadoc.spec.nocg" depends="setup.java.home.dir,init" unless="jogl.cg">
+ <target name="javadoc.spec.nocg" depends="load.user.properties,init" unless="jogl.cg">
<!-- Build the general Javadoc -->
<javadoc packagenames="${javadoc.spec.packagenames}"
excludepackagenames="${java.excludes.javadoc.packagenames}"
@@ -1747,7 +1650,7 @@
</target>
<!-- Same as above since Cg directories are not part of spec -->
- <target name="javadoc.spec.cg" depends="setup.java.home.dir,init" if="jogl.cg">
+ <target name="javadoc.spec.cg" depends="load.user.properties,init" if="jogl.cg">
<!-- Build the general Javadoc -->
<javadoc packagenames="${javadoc.spec.packagenames}"
excludepackagenames="${java.excludes.javadoc.packagenames}"
@@ -1795,7 +1698,7 @@
</javadoc>
</target>
- <target name="javadoc.dev.all" depends="setup.java.home.dir,init,declare,javadoc.dev.nocg,javadoc.dev.cg" />
+ <target name="javadoc.dev.all" depends="load.user.properties,init,declare,javadoc.dev.nocg,javadoc.dev.cg" />
<!-- ================================================================== -->
<!--
@@ -2255,7 +2158,7 @@
<!--
- Build everything.
-->
- <target name="all" description="Build JOGL JAR file(s) and native libraries." depends="setup.java.home.dir,init,declare">
+ <target name="all" description="Build JOGL JAR file(s) and native libraries." depends="load.user.properties,init,declare">
<!-- Generate, compile, and build the jar for the Java sources. -->
<antcall target="jar" inheritRefs="true" />
diff --git a/make/jogl.properties b/make/jogl.properties
index 59944f532..bb5e81f87 100644
--- a/make/jogl.properties
+++ b/make/jogl.properties
@@ -11,21 +11,6 @@
#
# java.home.dir=C:/jdk1.4.2
-# If you are building on Windows and have the Microsoft Visual C++
-# compilers installed, you can choose an alternate compiler with which
-# to build the JOGL native code. Valid strings here are "vc6", "vc7",
-# "vc8", "vc8_x64", and "mingw".
-win32.c.compiler=vc6
-
-# If you are building on a Mac OS X system supporting
-# cross-compilation and want to generate fat (PPC and x86) binaries,
-# uncomment the property below
-# macosxfat=true
-# If you are building on a 64-bit Mac OS X system supporting
-# cross-compilation and want to generate fat (PPC64 and x86_64) binaries,
-# uncomment the property below
-# macosx64fat=true
-
#
# If you are building the Cg binding (by specifying -Djogl.cg=1 to the
# Ant build) and have installed the Cg SDK in somewhere other than the
@@ -34,4 +19,3 @@ win32.c.compiler=vc6
#
windows.cg.lib=C:/Program Files/Nvidia Corporation/Cg/lib
x11.cg.lib=/usr/lib
-
diff --git a/make/validate-properties.xml b/make/validate-properties.xml
index 4a2d386c9..3afb12bd5 100644
--- a/make/validate-properties.xml
+++ b/make/validate-properties.xml
@@ -25,25 +25,6 @@
</target>
<!--
- - Ensure that "java.home.dir" is set.
- - NOTE: "java.home" is an internal property for ANT that is not
- - typically set to what the build needs it to be.
- -->
- <target name="java.home.dir.validate" unless="java.home.dir">
- <fail>
-
- *************************************************************
- ** The property "java.home.dir" was not set in the JOGL **
- ** properties file **
- ** "${user.properties.file}" **
- ** (or this file was not found). **
- ** **
- ** Please set "java.home.dir" to your JAVA_HOME directory. **
- *************************************************************
- </fail>
- </target>
-
- <!--
- Make sure that jogl.jar is not on the CLASSPATH; this can cause
- builds to fail since if this Java process has the jar file open
- we can not overwrite it.
@@ -65,7 +46,7 @@
<!--
- Validate the required properties
-->
- <target name="validate" depends="antlr.jar.validate, java.home.dir.validate, java.class.path.validate"
+ <target name="validate" depends="antlr.jar.validate, java.class.path.validate"
description="Validate required properties" />
</project>
diff --git a/src/classes/com/sun/javafx/newt/Event.java b/src/classes/com/sun/javafx/newt/Event.java
new file mode 100644
index 000000000..7d2b24ba5
--- /dev/null
+++ b/src/classes/com/sun/javafx/newt/Event.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ */
+
+package com.sun.javafx.newt;
+
+public class Event {
+ private boolean isSystemEvent;
+ private int eventType;
+ private Window source;
+ private long when;
+
+ Event(boolean isSystemEvent, int eventType, Window source, long when) {
+ this.isSystemEvent = isSystemEvent;
+ this.eventType = eventType;
+ this.source = source;
+ this.when = when;
+ }
+
+ protected Event(int eventType, Window source, long when) {
+ this(false, eventType, source, when);
+ }
+
+ /** Indicates whether this event was produced by the system or
+ generated by user code. */
+ public final boolean isSystemEvent() {
+ return isSystemEvent;
+ }
+
+ /** Returns the event type of this event. */
+ public final int getEventType() {
+ return eventType;
+ }
+
+ /** Returns the source Window which produced this Event. */
+ public final Window getSource() {
+ return source;
+ }
+
+ /** Returns the timestamp, in milliseconds, of this event. */
+ public final long getWhen() {
+ return when;
+ }
+
+ public String toString() {
+ return "Event[sys:"+isSystemEvent()+", source:"+getSource()+", when:"+getWhen()+"]";
+ }
+}
diff --git a/src/classes/com/sun/javafx/newt/GLWindow.java b/src/classes/com/sun/javafx/newt/GLWindow.java
new file mode 100644
index 000000000..93bb34fe0
--- /dev/null
+++ b/src/classes/com/sun/javafx/newt/GLWindow.java
@@ -0,0 +1,389 @@
+/*
+ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ */
+
+package com.sun.javafx.newt;
+
+import javax.media.opengl.*;
+import com.sun.opengl.impl.GLDrawableHelper;
+
+/**
+ * An implementation of {@link Window} which is customized for OpenGL
+ * use, and which implements the {@link
+ * javax.media.opengl.GLAutoDrawable} interface. For convenience, this
+ * window class guarantees that its OpenGL context is current inside
+ * the various EventListeners' callbacks (MouseListener, KeyListener,
+ * etc.).
+ */
+public class GLWindow extends Window implements GLAutoDrawable {
+ private Window window;
+
+ /** Constructor. Do not call this directly -- use {@link
+ create()} instead. */
+ protected GLWindow(Window window, GLCapabilities caps) {
+ this.window = window;
+ this.caps = caps;
+ window.addWindowListener(new WindowListener() {
+ public void windowResized(WindowEvent e) {
+ sendReshape = true;
+ }
+
+ public void windowMoved(WindowEvent e) {
+ }
+ });
+ }
+
+ /** Creates a new GLWindow on the local display, screen 0, with a
+ dummy visual ID, and with the default GLCapabilities. */
+ public static GLWindow create() {
+ return create(null, null);
+ }
+
+ /** Creates a new GLWindow referring to the given window. */
+ public static GLWindow create(Window window) {
+ return create(window, null);
+ }
+
+ /** Creates a new GLWindow on the local display, screen 0, with a
+ dummy visual ID, and with the given GLCapabilities. */
+ public static GLWindow create(GLCapabilities caps) {
+ return create(null, caps);
+ }
+
+ /** Creates a new GLWindow referring to the given window, and with the given GLCapabilities. */
+ public static GLWindow create(Window window, GLCapabilities caps) {
+ if (window == null) {
+ Display display = NewtFactory.createDisplay(null); // local display
+ Screen screen = NewtFactory.createScreen(display, 0); // screen 0
+ window = NewtFactory.createWindow(screen, 0); // dummy VisualID
+ }
+ if (caps == null) {
+ caps = new GLCapabilities();
+ }
+
+ return new GLWindow(window, caps);
+ }
+
+ public boolean isTerminalObject() {
+ shouldNotCallThis();
+ return false;
+ }
+
+ protected void createNative() {
+ shouldNotCallThis();
+ }
+
+ protected void closeNative() {
+ shouldNotCallThis();
+ }
+
+ public void close() {
+ if (context != null) {
+ if (context == GLContext.getCurrent()) {
+ context.release();
+ }
+ context.destroy();
+ }
+ if (drawable != null) {
+ drawable.destroy();
+ }
+
+ window.close();
+ }
+
+ public int getDisplayWidth() {
+ return window.getDisplayWidth();
+ }
+
+ public int getDisplayHeight() {
+ return window.getDisplayHeight();
+ }
+
+ public void pumpMessages(int eventMask) {
+ pumpMessagesWithEventMaskAction.eventMask = eventMask;
+ pumpMessagesImpl(pumpMessagesWithEventMaskAction);
+ }
+
+ class PumpMessagesWithEventMaskAction implements Runnable {
+ private int eventMask;
+
+ public void run() {
+ window.pumpMessages(eventMask);
+ }
+ }
+ private PumpMessagesWithEventMaskAction pumpMessagesWithEventMaskAction = new PumpMessagesWithEventMaskAction();
+
+ public void pumpMessages() {
+ pumpMessagesImpl(pumpMessagesAction);
+ }
+
+ class PumpMessagesAction implements Runnable {
+ public void run() {
+ window.pumpMessages();
+ }
+ }
+ private PumpMessagesAction pumpMessagesAction = new PumpMessagesAction();
+
+ private void pumpMessagesImpl(Runnable pumpMessagesAction) {
+ // pumpMessagesAction.run();
+
+ boolean autoSwapBuffer = helper.getAutoSwapBufferMode();
+ helper.setAutoSwapBufferMode(false);
+ try {
+ helper.invokeGL(drawable, context, pumpMessagesAction, initAction);
+ } finally {
+ helper.setAutoSwapBufferMode(autoSwapBuffer);
+ }
+
+ }
+
+ protected void dispatchMessages(int eventMask) {
+ shouldNotCallThis();
+ }
+
+ public void setVisible(boolean visible) {
+ window.setVisible(visible);
+ if (visible && context == null) {
+ factory = GLDrawableFactory.getFactory(window);
+ drawable = factory.createGLDrawable(window, caps, null);
+ window.setVisible(true);
+ drawable.setRealized(true);
+ context = drawable.createContext(null);
+ System.out.println("Created context");
+ }
+ }
+
+ public void setSize(int width, int height) {
+ window.setSize(width, height);
+ }
+
+ public void setPosition(int x, int y) {
+ window.setPosition(x, y);
+ }
+
+ public boolean setFullscreen(boolean fullscreen) {
+ return window.setFullscreen(fullscreen);
+ }
+
+ public boolean isVisible() {
+ return window.isVisible();
+ }
+
+ public int getX() {
+ return window.getX();
+ }
+
+ public int getY() {
+ return window.getY();
+ }
+
+ public int getWidth() {
+ return window.getWidth();
+ }
+
+ public int getHeight() {
+ return window.getHeight();
+ }
+
+ public boolean isFullscreen() {
+ return window.isFullscreen();
+ }
+
+ public void addMouseListener(MouseListener l) {
+ window.addMouseListener(l);
+ }
+
+ public void removeMouseListener(MouseListener l) {
+ window.removeMouseListener(l);
+ }
+
+ public MouseListener[] getMouseListeners() {
+ return window.getMouseListeners();
+ }
+
+ public void addKeyListener(KeyListener l) {
+ window.addKeyListener(l);
+ }
+
+ public void removeKeyListener(KeyListener l) {
+ window.removeKeyListener(l);
+ }
+
+ public KeyListener[] getKeyListeners() {
+ return window.getKeyListeners();
+ }
+
+ public void addWindowListener(WindowListener l) {
+ window.addWindowListener(l);
+ }
+
+ public void removeWindowListener(WindowListener l) {
+ window.removeWindowListener(l);
+ }
+
+ public WindowListener[] getWindowListeners() {
+ return window.getWindowListeners();
+ }
+
+ //----------------------------------------------------------------------
+ // OpenGL-related methods and state
+ //
+
+ private GLDrawableFactory factory;
+ private GLCapabilities caps;
+ private GLDrawable drawable;
+ private GLContext context;
+ private GLDrawableHelper helper = new GLDrawableHelper();
+ // To make reshape events be sent immediately before a display event
+ private boolean sendReshape;
+
+ public GLDrawableFactory getFactory() {
+ return factory;
+ }
+
+ public GLContext getContext() {
+ return context;
+ }
+
+ public GL getGL() {
+ GLContext ctx = getContext();
+ if (ctx == null) {
+ return null;
+ }
+ return ctx.getGL();
+ }
+
+ public void setGL(GL gl) {
+ GLContext ctx = getContext();
+ if (ctx != null) {
+ ctx.setGL(gl);
+ }
+ }
+
+ public void addGLEventListener(GLEventListener listener) {
+ helper.addGLEventListener(listener);
+ }
+
+ public void removeGLEventListener(GLEventListener listener) {
+ helper.removeGLEventListener(listener);
+ }
+
+ public void display() {
+ pumpMessages();
+ helper.invokeGL(drawable, context, displayAction, initAction);
+ }
+
+ public void setAutoSwapBufferMode(boolean onOrOff) {
+ helper.setAutoSwapBufferMode(onOrOff);
+ }
+
+ public boolean getAutoSwapBufferMode() {
+ return helper.getAutoSwapBufferMode();
+ }
+
+ public void swapBuffers() {
+ drawable.swapBuffers();
+ }
+
+ class InitAction implements Runnable {
+ public void run() {
+ helper.init(GLWindow.this);
+ }
+ }
+ private InitAction initAction = new InitAction();
+
+ class DisplayAction implements Runnable {
+ public void run() {
+ if (sendReshape) {
+ int width = getWidth();
+ int height = getHeight();
+ getGL().glViewport(0, 0, width, height);
+ helper.reshape(GLWindow.this, 0, 0, width, height);
+ sendReshape = false;
+ }
+
+ helper.display(GLWindow.this);
+ }
+ }
+
+ private DisplayAction displayAction = new DisplayAction();
+
+ //----------------------------------------------------------------------
+ // GLDrawable methods that are not really needed
+ //
+
+ public GLContext createContext(GLContext shareWith) {
+ return drawable.createContext(shareWith);
+ }
+
+ public void setRealized(boolean realized) {
+ }
+
+ public void destroy() {
+ close();
+ }
+
+ public GLCapabilities getChosenGLCapabilities() {
+ if (drawable == null)
+ return null;
+
+ return drawable.getChosenGLCapabilities();
+ }
+
+ public void setChosenGLCapabilities(GLCapabilities caps) {
+ drawable.setChosenGLCapabilities(caps);
+ }
+
+ public NativeWindow getNativeWindow() {
+ return drawable.getNativeWindow();
+ }
+
+ public int lockSurface() throws GLException {
+ return drawable.lockSurface();
+ }
+
+ public void unlockSurface() {
+ drawable.unlockSurface();
+ }
+
+ public boolean isSurfaceLocked() {
+ return drawable.isSurfaceLocked();
+ }
+
+ //----------------------------------------------------------------------
+ // Internals only below this point
+ //
+
+ private void shouldNotCallThis() {
+ throw new RuntimeException("Should not call this");
+ }
+}
diff --git a/src/classes/com/sun/javafx/newt/InputEvent.java b/src/classes/com/sun/javafx/newt/InputEvent.java
index e8644f953..dc36be34d 100644
--- a/src/classes/com/sun/javafx/newt/InputEvent.java
+++ b/src/classes/com/sun/javafx/newt/InputEvent.java
@@ -33,7 +33,7 @@
package com.sun.javafx.newt;
-public abstract class InputEvent
+public abstract class InputEvent extends Event
{
public static int SHIFT_MASK = 1 << 0;
public static int CTRL_MASK = 1 << 1;
@@ -41,18 +41,12 @@ public abstract class InputEvent
public static int ALT_MASK = 1 << 3;
public static int ALT_GRAPH_MASK = 1 << 5;
- protected InputEvent(boolean sysEvent, Window source, long when, int modifiers) {
+ protected InputEvent(boolean sysEvent, int eventType, Window source, long when, int modifiers) {
+ super(sysEvent, eventType, source, when);
this.consumed=false;
- this.sysEvent=sysEvent;
- this.source=source;
- this.when=when;
this.modifiers=modifiers;
}
- protected boolean isSysEvent() {
- return sysEvent;
- }
-
public void consume() {
consumed=true;
}
@@ -63,9 +57,6 @@ public abstract class InputEvent
public int getModifiers() {
return modifiers;
}
- public long getWhen() {
- return when;
- }
public boolean isAltDown() {
return (modifiers&ALT_MASK)!=0;
}
@@ -83,13 +74,9 @@ public abstract class InputEvent
}
public String toString() {
- return "InputEvent[sys:"+sysEvent+", source:"+source+", when:"+when+", modifiers:"+modifiers+"]";
+ return "InputEvent[modifiers:"+modifiers+"]";
}
- private boolean sysEvent, consumed;
- private Window source;
+ private boolean consumed;
private int modifiers;
- private long when;
-
}
-
diff --git a/src/classes/com/sun/javafx/newt/KeyEvent.java b/src/classes/com/sun/javafx/newt/KeyEvent.java
index 26e306687..92366bc93 100644
--- a/src/classes/com/sun/javafx/newt/KeyEvent.java
+++ b/src/classes/com/sun/javafx/newt/KeyEvent.java
@@ -35,9 +35,8 @@ package com.sun.javafx.newt;
public class KeyEvent extends InputEvent
{
- protected KeyEvent(boolean sysEvent, int eventType, Window source, long when, int modifiers, int keyCode, char keyChar) {
- super(sysEvent, source, when, modifiers);
- this.eventType=eventType;
+ KeyEvent(boolean sysEvent, int eventType, Window source, long when, int modifiers, int keyCode, char keyChar) {
+ super(sysEvent, eventType, source, when, modifiers);
this.keyCode=keyCode;
this.keyChar=keyChar;
}
@@ -45,9 +44,6 @@ public class KeyEvent extends InputEvent
this(false, eventType, source, when, modifiers, keyCode, keyChar);
}
- public int getEventType() {
- return eventType;
- }
public char getKeyChar() {
return keyChar;
}
@@ -56,8 +52,8 @@ public class KeyEvent extends InputEvent
}
public String toString() {
- return "KeyEvent["+getEventTypeString(eventType)+
- ", code "+keyCode+", char "+keyChar+", isActionKey "+isActionKey()+" "+super.toString();
+ return "KeyEvent["+getEventTypeString(getEventType())+
+ ", code "+keyCode+", char "+keyChar+", isActionKey "+isActionKey()+", "+super.toString()+"]";
}
public static String getEventTypeString(int type) {
@@ -65,7 +61,7 @@ public class KeyEvent extends InputEvent
case EVENT_KEY_PRESSED: return "EVENT_KEY_PRESSED";
case EVENT_KEY_RELEASED: return "EVENT_KEY_RELEASED";
case EVENT_KEY_TYPED: return "EVENT_KEY_TYPED";
- default: return "unknown";
+ default: return "unknown (" + type + ")";
}
}
@@ -116,13 +112,12 @@ public class KeyEvent extends InputEvent
return false;
}
- private int eventType;
private int keyCode;
private char keyChar;
- public static final int EVENT_KEY_PRESSED = 1 << 0;
- public static final int EVENT_KEY_RELEASED= 1 << 1;
- public static final int EVENT_KEY_TYPED = 1 << 2;
+ public static final int EVENT_KEY_PRESSED = 300;
+ public static final int EVENT_KEY_RELEASED= 301;
+ public static final int EVENT_KEY_TYPED = 302;
/* Virtual key codes. */
diff --git a/src/classes/com/sun/javafx/newt/MouseEvent.java b/src/classes/com/sun/javafx/newt/MouseEvent.java
index 19b5f2b93..47d2803c0 100644
--- a/src/classes/com/sun/javafx/newt/MouseEvent.java
+++ b/src/classes/com/sun/javafx/newt/MouseEvent.java
@@ -41,8 +41,7 @@ public class MouseEvent extends InputEvent
protected MouseEvent(boolean sysEvent, int eventType, Window source, long when, int modifiers, int x, int y, int clickCount, int button)
{
- super(sysEvent, source, when, modifiers);
- this.eventType=eventType;
+ super(sysEvent, eventType, source, when, modifiers);
this.x=x;
this.y=y;
this.clickCount=clickCount;
@@ -52,9 +51,6 @@ public class MouseEvent extends InputEvent
this(false, eventType, source, when, modifiers, x, y, clickCount, button);
}
- public int getEventType() {
- return eventType;
- }
public int getButton() {
return button;
}
@@ -69,8 +65,8 @@ public class MouseEvent extends InputEvent
}
public String toString() {
- return "MouseEvent["+getEventTypeString(eventType)+
- ", "+x+"/"+y+", button "+button+", count "+clickCount+", "+super.toString();
+ return "MouseEvent["+getEventTypeString(getEventType())+
+ ", "+x+"/"+y+", button "+button+", count "+clickCount+", "+super.toString()+"]";
}
public static String getEventTypeString(int type) {
@@ -82,19 +78,17 @@ public class MouseEvent extends InputEvent
case EVENT_MOUSE_RELEASED: return "EVENT_MOUSE_RELEASED";
case EVENT_MOUSE_MOVED: return "EVENT_MOUSE_MOVED";
case EVENT_MOUSE_DRAGGED: return "EVENT_MOUSE_DRAGGED";
- default: return "unknown";
+ default: return "unknown (" + type + ")";
}
}
- private int eventType, x, y, clickCount, button;
-
- public static final int EVENT_MOUSE_CLICKED = 1 << 0;
- public static final int EVENT_MOUSE_ENTERED = 1 << 1;
- public static final int EVENT_MOUSE_EXITED = 1 << 2;
- public static final int EVENT_MOUSE_PRESSED = 1 << 3;
- public static final int EVENT_MOUSE_RELEASED = 1 << 4;
- public static final int EVENT_MOUSE_MOVED = 1 << 5;
- public static final int EVENT_MOUSE_DRAGGED = 1 << 6;
+ private int x, y, clickCount, button;
+ public static final int EVENT_MOUSE_CLICKED = 200;
+ public static final int EVENT_MOUSE_ENTERED = 201;
+ public static final int EVENT_MOUSE_EXITED = 202;
+ public static final int EVENT_MOUSE_PRESSED = 203;
+ public static final int EVENT_MOUSE_RELEASED = 204;
+ public static final int EVENT_MOUSE_MOVED = 205;
+ public static final int EVENT_MOUSE_DRAGGED = 206;
}
-
diff --git a/src/classes/com/sun/javafx/newt/Window.java b/src/classes/com/sun/javafx/newt/Window.java
index 1486091e8..a5bdf0806 100755
--- a/src/classes/com/sun/javafx/newt/Window.java
+++ b/src/classes/com/sun/javafx/newt/Window.java
@@ -43,6 +43,7 @@ public abstract class Window implements NativeWindow
{
public static final boolean DEBUG_MOUSE_EVENT = false;
public static final boolean DEBUG_KEY_EVENT = false;
+ public static final boolean DEBUG_WINDOW_EVENT = false;
public static final boolean DEBUG_IMPLEMENTATION = false;
private static Class getWindowClass(String type)
@@ -131,9 +132,9 @@ public abstract class Window implements NativeWindow
public void pumpMessages() {
int em = 0;
- //if(windowistener.size()>0) em |= EventListener.WINDOW;
- if(mouseListener.size()>0) em |= EventListener.MOUSE;
- if(keyListener.size()>0) em |= EventListener.KEY;
+ if(windowListeners.size()>0) em |= EventListener.WINDOW;
+ if(mouseListeners.size()>0) em |= EventListener.MOUSE;
+ if(keyListeners.size()>0) em |= EventListener.KEY;
pumpMessages(em);
}
@@ -271,25 +272,25 @@ public abstract class Window implements NativeWindow
if(l == null) {
return;
}
- ArrayList newMouseListeners = (ArrayList) mouseListener.clone();
+ ArrayList newMouseListeners = (ArrayList) mouseListeners.clone();
newMouseListeners.add(l);
- mouseListener = newMouseListeners;
+ mouseListeners = newMouseListeners;
}
public synchronized void removeMouseListener(MouseListener l) {
if (l == null) {
return;
}
- ArrayList newMouseListeners = (ArrayList) mouseListener.clone();
+ ArrayList newMouseListeners = (ArrayList) mouseListeners.clone();
newMouseListeners.remove(l);
- mouseListener = newMouseListeners;
+ mouseListeners = newMouseListeners;
}
public synchronized MouseListener[] getMouseListeners() {
- return (MouseListener[]) mouseListener.toArray();
+ return (MouseListener[]) mouseListeners.toArray();
}
- private ArrayList mouseListener = new ArrayList();
+ private ArrayList mouseListeners = new ArrayList();
private long lastMousePressed = 0;
private int lastMouseClickCount = 0;
public static final int ClickTimeout = 200;
@@ -346,7 +347,7 @@ public abstract class Window implements NativeWindow
ArrayList listeners = null;
synchronized(this) {
- listeners = mouseListener;
+ listeners = mouseListeners;
}
for(Iterator i = listeners.iterator(); i.hasNext(); ) {
MouseListener l = (MouseListener) i.next();
@@ -389,21 +390,25 @@ public abstract class Window implements NativeWindow
if(l == null) {
return;
}
- keyListener.add(l);
+ ArrayList newKeyListeners = (ArrayList) keyListeners.clone();
+ newKeyListeners.add(l);
+ keyListeners = newKeyListeners;
}
public synchronized void removeKeyListener(KeyListener l) {
if (l == null) {
return;
}
- keyListener.remove(l);
+ ArrayList newKeyListeners = (ArrayList) keyListeners.clone();
+ newKeyListeners.remove(l);
+ keyListeners = newKeyListeners;
}
public synchronized KeyListener[] getKeyListeners() {
- return (KeyListener[]) keyListener.toArray();
+ return (KeyListener[]) keyListeners.toArray();
}
- private ArrayList keyListener = new ArrayList();
+ private ArrayList keyListeners = new ArrayList();
protected void sendKeyEvent(int eventType, int modifiers, int keyCode, char keyChar) {
KeyEvent e = new KeyEvent(true, eventType, this, System.currentTimeMillis(),
@@ -411,7 +416,11 @@ public abstract class Window implements NativeWindow
if(DEBUG_KEY_EVENT) {
System.out.println("sendKeyEvent: "+e);
}
- for(Iterator i = keyListener.iterator(); i.hasNext(); ) {
+ ArrayList listeners = null;
+ synchronized(this) {
+ listeners = keyListeners;
+ }
+ for(Iterator i = listeners.iterator(); i.hasNext(); ) {
KeyListener l = (KeyListener) i.next();
switch(eventType) {
case KeyEvent.EVENT_KEY_PRESSED:
@@ -428,5 +437,56 @@ public abstract class Window implements NativeWindow
}
}
}
-}
+ //
+ // WindowListener Support
+ //
+
+ private ArrayList windowListeners = new ArrayList();
+
+ public synchronized void addWindowListener(WindowListener l) {
+ if(l == null) {
+ return;
+ }
+ ArrayList newWindowListeners = (ArrayList) windowListeners.clone();
+ newWindowListeners.add(l);
+ windowListeners = newWindowListeners;
+ }
+
+ public synchronized void removeWindowListener(WindowListener l) {
+ if (l == null) {
+ return;
+ }
+ ArrayList newWindowListeners = (ArrayList) windowListeners.clone();
+ newWindowListeners.remove(l);
+ windowListeners = newWindowListeners;
+ }
+
+ public synchronized WindowListener[] getWindowListeners() {
+ return (WindowListener[]) windowListeners.toArray();
+ }
+
+ protected void sendWindowEvent(int eventType) {
+ WindowEvent e = new WindowEvent(true, eventType, this, System.currentTimeMillis());
+ if(DEBUG_WINDOW_EVENT) {
+ System.out.println("sendWindowEvent: "+e);
+ }
+ ArrayList listeners = null;
+ synchronized(this) {
+ listeners = windowListeners;
+ }
+ for(Iterator i = listeners.iterator(); i.hasNext(); ) {
+ WindowListener l = (WindowListener) i.next();
+ switch(eventType) {
+ case WindowEvent.EVENT_WINDOW_RESIZED:
+ l.windowResized(e);
+ break;
+ case WindowEvent.EVENT_WINDOW_MOVED:
+ l.windowMoved(e);
+ break;
+ default:
+ throw new RuntimeException("Unexpected window event type " + e.getEventType());
+ }
+ }
+ }
+}
diff --git a/src/classes/com/sun/javafx/newt/WindowEvent.java b/src/classes/com/sun/javafx/newt/WindowEvent.java
new file mode 100644
index 000000000..49cdb5497
--- /dev/null
+++ b/src/classes/com/sun/javafx/newt/WindowEvent.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ */
+
+package com.sun.javafx.newt;
+
+public class WindowEvent extends Event {
+ public static final int EVENT_WINDOW_RESIZED = 100;
+ public static final int EVENT_WINDOW_MOVED = 101;
+
+ public WindowEvent(int eventType, Window source, long when) {
+ this(false, eventType, source, when);
+ }
+
+ WindowEvent(boolean isSystemEvent, int eventType, Window source, long when) {
+ super(isSystemEvent, eventType, source, when);
+ }
+
+ public static String getEventTypeString(int type) {
+ switch(type) {
+ case EVENT_WINDOW_RESIZED: return "WINDOW_RESIZED";
+ case EVENT_WINDOW_MOVED: return "WINDOW_MOVED";
+ default: return "unknown (" + type + ")";
+ }
+ }
+ public String toString() {
+ return "WindowEvent["+getEventTypeString(getEventType()) +
+ ", " + super.toString() + "]";
+ }
+}
diff --git a/src/classes/com/sun/javafx/newt/WindowListener.java b/src/classes/com/sun/javafx/newt/WindowListener.java
new file mode 100644
index 000000000..b76202f01
--- /dev/null
+++ b/src/classes/com/sun/javafx/newt/WindowListener.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ */
+
+package com.sun.javafx.newt;
+
+public interface WindowListener extends EventListener {
+ public void windowResized(WindowEvent e);
+ public void windowMoved(WindowEvent e);
+}
diff --git a/src/classes/com/sun/javafx/newt/awt/AWTWindow.java b/src/classes/com/sun/javafx/newt/awt/AWTWindow.java
index 1e0f8d6ee..780d7f488 100644
--- a/src/classes/com/sun/javafx/newt/awt/AWTWindow.java
+++ b/src/classes/com/sun/javafx/newt/awt/AWTWindow.java
@@ -71,9 +71,11 @@ public class AWTWindow extends Window {
canvas.addMouseListener(listener);
canvas.addMouseMotionListener(listener);
canvas.addKeyListener(listener);
+ canvas.addComponentListener(listener);
frame.add(canvas, BorderLayout.CENTER);
frame.setSize(width, height);
frame.setLocation(x, y);
+ frame.addComponentListener(new MoveListener());
}
});
}
@@ -126,6 +128,8 @@ public class AWTWindow extends Window {
}
public void setPosition(final int x, final int y) {
+ this.x = x;
+ this.y = y;
runOnEDT(new Runnable() {
public void run() {
frame.setLocation(x, y);
@@ -153,18 +157,40 @@ public class AWTWindow extends Window {
}
}
if (w != null) {
- if (w.isMouseEvent()) {
- if ((eventMask & com.sun.javafx.newt.EventListener.MOUSE) != 0) {
- MouseEvent e = (MouseEvent) w.getEvent();
- sendMouseEvent(w.getType(), convertModifiers(e),
- e.getX(), e.getY(), convertButton(e));
- }
- } else {
- if ((eventMask & com.sun.javafx.newt.EventListener.KEY) != 0) {
- KeyEvent e = (KeyEvent) w.getEvent();
- sendKeyEvent(w.getType(), convertModifiers(e),
- e.getKeyCode(), e.getKeyChar());
- }
+ switch (w.getType()) {
+ case com.sun.javafx.newt.WindowEvent.EVENT_WINDOW_RESIZED:
+ case com.sun.javafx.newt.WindowEvent.EVENT_WINDOW_MOVED:
+ if ((eventMask & com.sun.javafx.newt.EventListener.WINDOW) != 0) {
+ sendWindowEvent(w.getType());
+ }
+ break;
+
+ case com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_CLICKED:
+ case com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_ENTERED:
+ case com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_EXITED:
+ case com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_PRESSED:
+ case com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_RELEASED:
+ case com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_MOVED:
+ case com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_DRAGGED:
+ if ((eventMask & com.sun.javafx.newt.EventListener.MOUSE) != 0) {
+ MouseEvent e = (MouseEvent) w.getEvent();
+ sendMouseEvent(w.getType(), convertModifiers(e),
+ e.getX(), e.getY(), convertButton(e));
+ }
+ break;
+
+ case com.sun.javafx.newt.KeyEvent.EVENT_KEY_PRESSED:
+ case com.sun.javafx.newt.KeyEvent.EVENT_KEY_RELEASED:
+ case com.sun.javafx.newt.KeyEvent.EVENT_KEY_TYPED:
+ if ((eventMask & com.sun.javafx.newt.EventListener.KEY) != 0) {
+ KeyEvent e = (KeyEvent) w.getEvent();
+ sendKeyEvent(w.getType(), convertModifiers(e),
+ e.getKeyCode(), e.getKeyChar());
+ }
+ break;
+
+ default:
+ throw new RuntimeException("Unknown event type " + w.getType());
}
if(DEBUG_MOUSE_EVENT) {
System.out.println("dispatchMessages: in event:"+w.getEvent());
@@ -205,31 +231,26 @@ public class AWTWindow extends Window {
}
}
- private void enqueueEvent(boolean isMouseEvent, int type, InputEvent e) {
- if(DEBUG_MOUSE_EVENT) {
- System.out.println("enqueueEvent: mouse"+isMouseEvent+", event: "+e);
- }
- AWTEventWrapper wrapper = new AWTEventWrapper(isMouseEvent,type, e);
+ private void enqueueEvent(int type, InputEvent e) {
+ AWTEventWrapper wrapper = new AWTEventWrapper(type, e);
synchronized(this) {
events.add(wrapper);
}
}
+ private static final int WINDOW_EVENT = 1;
+ private static final int KEY_EVENT = 2;
+ private static final int MOUSE_EVENT = 3;
+
static class AWTEventWrapper {
- boolean isMouseEvent;
int type;
InputEvent e;
- AWTEventWrapper(boolean isMouseEvent, int type, InputEvent e) {
- this.isMouseEvent = isMouseEvent;
+ AWTEventWrapper(int type, InputEvent e) {
this.type = type;
this.e = e;
}
- public boolean isMouseEvent() {
- return isMouseEvent;
- }
-
public int getType() {
return type;
}
@@ -239,46 +260,79 @@ public class AWTWindow extends Window {
}
}
- class Listener implements MouseListener, MouseMotionListener, KeyListener {
+ class MoveListener implements ComponentListener {
+ public void componentResized(ComponentEvent e) {
+ }
+
+ public void componentMoved(ComponentEvent e) {
+ x = frame.getX();
+ y = frame.getY();
+ enqueueEvent(com.sun.javafx.newt.WindowEvent.EVENT_WINDOW_MOVED, null);
+ }
+
+ public void componentShown(ComponentEvent e) {
+ }
+
+ public void componentHidden(ComponentEvent e) {
+ }
+
+ }
+
+ class Listener implements ComponentListener, MouseListener, MouseMotionListener, KeyListener {
+ public void componentResized(ComponentEvent e) {
+ width = canvas.getWidth();
+ height = canvas.getHeight();
+ enqueueEvent(com.sun.javafx.newt.WindowEvent.EVENT_WINDOW_RESIZED, null);
+ }
+
+ public void componentMoved(ComponentEvent e) {
+ }
+
+ public void componentShown(ComponentEvent e) {
+ }
+
+ public void componentHidden(ComponentEvent e) {
+ }
+
public void mouseClicked(MouseEvent e) {
// We ignore these as we synthesize them ourselves out of
// mouse pressed and released events
}
public void mouseEntered(MouseEvent e) {
- enqueueEvent(true, com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_ENTERED, e);
+ enqueueEvent(com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_ENTERED, e);
}
public void mouseExited(MouseEvent e) {
- enqueueEvent(true, com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_EXITED, e);
+ enqueueEvent(com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_EXITED, e);
}
public void mousePressed(MouseEvent e) {
- enqueueEvent(true, com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_PRESSED, e);
+ enqueueEvent(com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_PRESSED, e);
}
public void mouseReleased(MouseEvent e) {
- enqueueEvent(true, com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_RELEASED, e);
+ enqueueEvent(com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_RELEASED, e);
}
public void mouseMoved(MouseEvent e) {
- enqueueEvent(true, com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_MOVED, e);
+ enqueueEvent(com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_MOVED, e);
}
public void mouseDragged(MouseEvent e) {
- enqueueEvent(true, com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_DRAGGED, e);
+ enqueueEvent(com.sun.javafx.newt.MouseEvent.EVENT_MOUSE_DRAGGED, e);
}
public void keyPressed(KeyEvent e) {
- enqueueEvent(false, com.sun.javafx.newt.KeyEvent.EVENT_KEY_PRESSED, e);
+ enqueueEvent(com.sun.javafx.newt.KeyEvent.EVENT_KEY_PRESSED, e);
}
public void keyReleased(KeyEvent e) {
- enqueueEvent(false, com.sun.javafx.newt.KeyEvent.EVENT_KEY_RELEASED, e);
+ enqueueEvent(com.sun.javafx.newt.KeyEvent.EVENT_KEY_RELEASED, e);
}
public void keyTyped(KeyEvent e) {
- enqueueEvent(false, com.sun.javafx.newt.KeyEvent.EVENT_KEY_TYPED, e);
+ enqueueEvent(com.sun.javafx.newt.KeyEvent.EVENT_KEY_TYPED, e);
}
}
}
diff --git a/src/classes/com/sun/javafx/newt/windows/WindowsWindow.java b/src/classes/com/sun/javafx/newt/windows/WindowsWindow.java
index 00ecd5973..9e0df6c71 100755
--- a/src/classes/com/sun/javafx/newt/windows/WindowsWindow.java
+++ b/src/classes/com/sun/javafx/newt/windows/WindowsWindow.java
@@ -154,11 +154,13 @@ public class WindowsWindow extends Window {
private void sizeChanged(int newWidth, int newHeight) {
width = newWidth;
height = newHeight;
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED);
}
private void positionChanged(int newX, int newY) {
x = newX;
y = newY;
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_MOVED);
}
private void windowClosed() {
diff --git a/src/classes/com/sun/javafx/newt/x11/X11Window.java b/src/classes/com/sun/javafx/newt/x11/X11Window.java
index 290b1e506..05d9abcb9 100755
--- a/src/classes/com/sun/javafx/newt/x11/X11Window.java
+++ b/src/classes/com/sun/javafx/newt/x11/X11Window.java
@@ -138,6 +138,7 @@ public class X11Window extends Window {
nfs_width=width;
nfs_height=height;
}
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED);
}
private void positionChanged(int newX, int newY) {
@@ -147,6 +148,7 @@ public class X11Window extends Window {
nfs_x=x;
nfs_y=y;
}
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_MOVED);
}
private void windowCreated(long visualID, long windowHandle) {
diff --git a/src/classes/javax/media/opengl/GLAutoDrawable.java b/src/classes/javax/media/opengl/GLAutoDrawable.java
index 688b78879..d4aff9107 100644
--- a/src/classes/javax/media/opengl/GLAutoDrawable.java
+++ b/src/classes/javax/media/opengl/GLAutoDrawable.java
@@ -81,10 +81,6 @@ public interface GLAutoDrawable extends GLDrawable {
display} callback. */
public void display();
- /** Schedules a repaint of the component at some point in the
- future. */
- public void repaint();
-
/** Enables or disables automatic buffer swapping for this drawable.
By default this property is set to true; when true, after all
GLEventListeners have been called for a display() event, the
diff --git a/src/classes/javax/media/opengl/GLDrawableFactory.java b/src/classes/javax/media/opengl/GLDrawableFactory.java
index 50cf96a33..a6e382760 100644
--- a/src/classes/javax/media/opengl/GLDrawableFactory.java
+++ b/src/classes/javax/media/opengl/GLDrawableFactory.java
@@ -200,11 +200,11 @@ public abstract class GLDrawableFactory {
throws GLException
{
if(null==GLProfile.getProfile()) {
- throw new GLException("No choosen/preset profile");
+ throw new GLException("No chosen/preset GLProfile");
}
initializeNWFactory();
if(nwFactory == null) {
- throw new GLException("Could not determine the NativeWindow-GLDrawableFactory");
+ throw new GLException("Could not determine the NativeWindow GLDrawableFactory");
}
return nwFactory;
}
diff --git a/src/classes/javax/media/opengl/awt/AWTGLAutoDrawable.java b/src/classes/javax/media/opengl/awt/AWTGLAutoDrawable.java
index ef5a7f2d7..85163f0ff 100644
--- a/src/classes/javax/media/opengl/awt/AWTGLAutoDrawable.java
+++ b/src/classes/javax/media/opengl/awt/AWTGLAutoDrawable.java
@@ -43,4 +43,7 @@ import javax.media.opengl.*;
import javax.media.opengl.glu.*;
public interface AWTGLAutoDrawable extends GLAutoDrawable, ComponentEvents {
+ /** Schedules a repaint of the component at some point in the
+ future. */
+ public void repaint();
}
diff --git a/src/native/newt/X11Window.c b/src/native/newt/X11Window.c
index 1640a36fc..972bb72a7 100755
--- a/src/native/newt/X11Window.c
+++ b/src/native/newt/X11Window.c
@@ -407,6 +407,8 @@ JNIEXPORT void JNICALL Java_com_sun_javafx_newt_x11_X11Window_DispatchMessages
break;
}
+ // FIXME: support resize and window re-positioning events
+
switch(evt.type) {
case ButtonPress:
if(evt.xbutton.window==w) {