aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--[-rwxr-xr-x]CHANGELOG.txt0
-rw-r--r--[-rwxr-xr-x]COPYRIGHT.txt0
-rw-r--r--[-rwxr-xr-x]LICENSE.txt0
-rw-r--r--[-rwxr-xr-x]README.txt0
-rw-r--r--doc/TODO.txt5
-rw-r--r--doc/deployment/JOGL-DEPLOYMENT.html4
-rw-r--r--doc/differences-from-gl4java.txt1
-rw-r--r--doc/userguide/index.html9
-rw-r--r--[-rwxr-xr-x]make/142-packages/package-list0
-rw-r--r--[-rwxr-xr-x]make/README-zip-bundles.txt0
-rw-r--r--make/build-junit.xml2
-rw-r--r--[-rwxr-xr-x]make/config/intptr.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/cg-common-CustomJavaCode.java0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/cglext.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/egl.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/eglext.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gdi-CustomCCode.c0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-desktop.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-es1.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-es2.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-headers.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-if-gl.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-if-gl2_es1.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-if-gl2_es2.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-impl-CustomJavaCode-gles1.java0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-impl-CustomJavaCode-gles2.java0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-macosx-nsig.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-win32-nsig.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl-x11-nsig.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl3-desktop.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl3-headers.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/gl3ext-headers.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/glu-CustomJavaCode-base.java0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/glu-CustomJavaCode-gl2es1.java0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/glu-base.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/glu-gl2.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/glu-gl2es1.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/glx-CustomCCode.c0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/glxext.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/jogl/nsig.cfg0
-rw-r--r--[-rwxr-xr-x]make/config/nativewindow/jawt-CustomJavaCode.java0
-rw-r--r--[-rwxr-xr-x]make/config/nativewindow/jawt-DrawingSurfaceInfo-CustomJavaCode.java0
-rw-r--r--[-rwxr-xr-x]make/jogl_wince6_vs9/gluegen-rt/gluegen-rt.vcproj0
-rw-r--r--[-rwxr-xr-x]make/jogl_wince6_vs9/jogl_es1/jogl_es1.vcproj0
-rw-r--r--[-rwxr-xr-x]make/jogl_wince6_vs9/jogl_es2/jogl_es2.vcproj0
-rw-r--r--[-rwxr-xr-x]make/jogl_wince6_vs9/jogl_wince6.sln0
-rw-r--r--[-rwxr-xr-x]make/jogl_wince6_vs9/jogl_wince6.suobin18944 -> 18944 bytes
-rw-r--r--[-rwxr-xr-x]make/jogl_wince6_vs9/newt/newt.vcproj0
-rw-r--r--[-rwxr-xr-x]make/lib/wince/arm/nvap/libEGL.libbin9314 -> 9314 bytes
-rw-r--r--[-rwxr-xr-x]make/lib/wince/arm/nvap/libGLESv1_CM.libbin32500 -> 32500 bytes
-rw-r--r--[-rwxr-xr-x]make/lib/wince/arm/nvap/libGLESv2.libbin30670 -> 30670 bytes
-rw-r--r--[-rwxr-xr-x]make/lib/wince/arm/nvap/libKD.libbin34346 -> 34346 bytes
-rw-r--r--[-rwxr-xr-x]make/lib/wince/arm/nvap/libnvkdmain.libbin3036 -> 3036 bytes
-rw-r--r--[-rwxr-xr-x]make/lib/wince/arm/nvap/libnvomx.libbin5962 -> 5962 bytes
-rw-r--r--[-rwxr-xr-x]make/native-taglet.properties0
-rwxr-xr-x[-rw-r--r--]make/scripts/java-win32-dbg.bat0
-rwxr-xr-x[-rw-r--r--]make/scripts/java-win32.bat0
-rwxr-xr-x[-rw-r--r--]make/scripts/java-win64-dbg.bat8
-rwxr-xr-x[-rw-r--r--]make/scripts/java-win64.bat5
-rwxr-xr-x[-rw-r--r--]make/scripts/lsGL23_commons.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/lsGL23_unique.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/lsGL23toGL2ES1_commons.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/lsGLES2toGL3_commons.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/lsGLtoES1ES2_commons.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/lsGLtoES1_commons.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/lsGLtoES2_commons.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/lsGLtoGL3_commons.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/lstjars.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/make.jogl.all.linux-x86.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/make.jogl.all.linux-x86_64.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/make.jogl.all.macosx.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/make.jogl.all.win32.bat0
-rwxr-xr-x[-rw-r--r--]make/scripts/make.jogl.all.win64.bat0
-rwxr-xr-x[-rw-r--r--]make/scripts/make.jogl.cdcfp.linux-x86.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/make.jogl.cdcfp.macosx.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/make.jogl.doc.all.x86_64.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/make.jogl.doc.x86_64.sh0
-rwxr-xr-x[-rw-r--r--]make/scripts/setenv-jogl.sh0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/cg/CG/cg_enums.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/egl/EGL/egl.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/egl/EGL/eglext.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/egl/EGL/eglplatform.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/egl/KD/NV_extwindowprops.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/egl/KD/NV_multitouch.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/egl/KD/kd.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/egl/KD/kdplatform.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/egl/window-system-ext.c0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/egl/window-system1.c0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/jni/classfile_constants.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/jni/jawt.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/jni/jdwpTransport.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/jni/jni.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/jni/jvmti.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/jni/win32/jawt_md.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/jni/win32/jni_md.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/macosx/cglext.c0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/opengl/GL3/gl3.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/opengl/GLES/gl.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/opengl/GLES/glext.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/opengl/GLES/glplatform.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/opengl/GLES/glu.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/opengl/GLES2/gl2.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/opengl/GLES2/gl2ext.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/opengl/gles1.c0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/opengl/gles2.c0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/NVOMX_ComponentBase.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/NVOMX_ComponentRegister.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/NVOMX_IndexExtensions.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_Audio.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_Component.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_ContentPipe.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_Core.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_IVCommon.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_Image.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_Index.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_Other.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_Types.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/openmax/OMX_Video.h0
-rw-r--r--[-rwxr-xr-x]make/stub_includes/win32/wglext.c0
-rw-r--r--[-rwxr-xr-x]nbproject/project.xml0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/audio/windows/waveout/Audio.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/audio/windows/waveout/Mixer.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/audio/windows/waveout/SoundBuffer.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/audio/windows/waveout/TestSpatialization.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/audio/windows/waveout/Track.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/audio/windows/waveout/Vec3f.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/GLBufferSizeTracker.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/GLBufferStateTracker.java0
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java2
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/GLDrawableHelper.java141
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLibraryBundleInfo.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLookupHelper.java0
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/GLPbufferImpl.java10
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/GLStateTracker.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/GLWorkerThread.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/ProjectFloat.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/awt/AWTThreadingPlugin.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/awt/Java2D.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawable.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawableFactory.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDynamicLibraryBundleInfo.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES1DynamicLibraryBundleInfo.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES2DynamicLibraryBundleInfo.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/egl/EGLExternalContext.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/egl/EGLOnscreenContext.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/egl/EGLPbufferContext.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/gl2/ProjectDouble.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/gl2/fixme/GLObjectTracker.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/Glue.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2Backend.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2CurveEvaluator.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2SurfaceEvaluator.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GLUgl2nurbsImpl.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Arc.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcSdirSorter.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTdirSorter.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTesselator.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Backend.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/BezierArc.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Bin.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Breakpt.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfArcs.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfBreakpts.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfFloats.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfQuiltspecs.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curve.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CurveEvaluator.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curvelist.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/DisplayList.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Flist.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotspec.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotvector.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Mapdesc.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Maplist.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/NurbsConsts.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_curve.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbscurve.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbssurface.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_pwlcurve.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_surface.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_trim.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patch.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patchlist.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Property.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Pspec.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/PwlArc.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quilt.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quiltspec.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/README.txt0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Renderhints.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Splinespec.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Subdivider.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/SurfaceEvaluator.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/TrimVertex.java0
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLDrawableFactory.java4
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLContext.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java0
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLDrawableFactory.java4
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXContext.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXDrawable.java0
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXDrawableFactory.java4
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/Animator.java20
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/FBObject.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/FPSAnimator.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/FileUtil.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/GLBuffers.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/Gamma.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/PMVMatrix.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/StreamUtil.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/TGAWriter.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/awt/ImageUtil.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/awt/Overlay.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/awt/Screenshot.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/awt/TextureRenderer.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/gl2/TileRenderer.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/FixedFuncHook.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bfpbin1108 -> 1108 bytes
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bvpbin2344 -> 2344 bytes
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorLight.bvpbin8787 -> 8787 bytes
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorTexture.bfpbin2392 -> 2392 bytes
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShader.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShaderNVidia.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/packrect/BackingStoreManager.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/packrect/Level.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/packrect/LevelSet.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/packrect/Rect.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/packrect/RectVisitor.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/packrect/RectanglePacker.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/packrect/package.html0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/Texture.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/TextureCoords.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/TextureData.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javame_cdc_fp0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javase0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/awt/AWTTextureData.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javase0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataInputStream.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataOutputStream.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/spi/SGIImage.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javase0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureProvider.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureWriter.java0
-rw-r--r--src/jogl/classes/javax/media/opengl/GLAutoDrawable.java100
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/javax/media/opengl/Threading.java0
-rw-r--r--src/jogl/classes/javax/media/opengl/awt/GLCanvas.java19
-rw-r--r--src/jogl/classes/javax/media/opengl/awt/GLJPanel.java13
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/javax/media/opengl/glu/GLUnurbs.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/javax/media/opengl/glu/GLUquadric.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/javax/media/opengl/glu/GLUtessellator.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallback.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallbackAdapter.java0
-rw-r--r--[-rwxr-xr-x]src/jogl/native/audio/Mixer.cpp0
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java0
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/awt/TestAWT01GLn.java4
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/awt/TestSwingAWT01GLn.java4
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/demos/es1/RedSquare.java7
-rw-r--r--src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/Gears.java5
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsAWT.java4
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNEWT.java4
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNewtAWTWrapper.java4
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/drawable/TestDrawable01NEWT.java4
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2File.java0
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2Screen.java0
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferBase.java0
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferUtil.java0
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/offscreen/Surface2File.java0
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/offscreen/TestOffscreen01NEWT.java4
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/offscreen/WindowUtilNEWT.java0
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/texture/TestTexture01AWT.java4
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/jogl/util/texture/gl2/TextureGL2ListenerDraw1.java0
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java152
-rw-r--r--src/junit/com/jogamp/test/junit/newt/TestGLWindows02NEWTAnimated.java230
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/TestListenerCom01AWT.java7
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/TestWindows01NEWT.java1
-rw-r--r--src/junit/com/jogamp/test/junit/newt/parenting/GLRunnableDummy.java (renamed from src/junit/com/jogamp/test/junit/newt/GLRunnableDummy.java)3
-rw-r--r--src/junit/com/jogamp/test/junit/newt/parenting/KeyAction.java (renamed from src/junit/com/jogamp/test/junit/newt/KeyAction.java)2
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01NEWT.java (renamed from src/junit/com/jogamp/test/junit/newt/TestParenting01NEWT.java)6
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01aAWT.java (renamed from src/junit/com/jogamp/test/junit/newt/TestParenting01aAWT.java)38
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01bAWT.java (renamed from src/junit/com/jogamp/test/junit/newt/TestParenting01bAWT.java)6
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01cAWT.java (renamed from src/junit/com/jogamp/test/junit/newt/TestParenting01cAWT.java)70
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01cSwingAWT.java (renamed from src/junit/com/jogamp/test/junit/newt/TestParenting01cSwingAWT.java)11
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/parenting/TestParenting02AWT.java (renamed from src/junit/com/jogamp/test/junit/newt/TestParenting02AWT.java)6
-rw-r--r--[-rwxr-xr-x]src/junit/com/jogamp/test/junit/newt/parenting/TestParenting02NEWT.java (renamed from src/junit/com/jogamp/test/junit/newt/TestParenting02NEWT.java)21
-rw-r--r--src/junit/com/jogamp/test/junit/newt/parenting/WindowAction.java (renamed from src/junit/com/jogamp/test/junit/newt/WindowAction.java)2
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/NativeWindowFactoryImpl.java4
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java3
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java2
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/Display.java31
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/NewtFactory.java0
-rw-r--r--src/newt/classes/com/jogamp/newt/OffscreenWindow.java3
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/Screen.java0
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/Window.java605
-rw-r--r--src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java107
-rw-r--r--src/newt/classes/com/jogamp/newt/event/NEWTEvent.java8
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/event/NEWTEventConsumer.java (renamed from src/newt/classes/com/jogamp/newt/event/PaintListener.java)33
-rw-r--r--src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java4
-rw-r--r--src/newt/classes/com/jogamp/newt/event/WindowAdapter.java2
-rw-r--r--src/newt/classes/com/jogamp/newt/event/WindowEvent.java4
-rw-r--r--src/newt/classes/com/jogamp/newt/event/WindowListener.java1
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/event/WindowUpdateEvent.java (renamed from src/newt/classes/com/jogamp/newt/event/PaintEvent.java)55
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java10
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java6
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java14
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTNewtEventFactory.java10
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTParentWindowAdapter.java12
-rw-r--r--src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java30
-rw-r--r--src/newt/classes/com/jogamp/newt/impl/awt/AWTWindow.java20
-rw-r--r--src/newt/classes/com/jogamp/newt/impl/intel/gdl/Window.java3
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/macosx/MacDisplay.java6
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/macosx/MacScreen.java0
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/macosx/MacWindow.java58
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Screen.java0
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Window.java3
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDDisplay.java0
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDScreen.java0
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDWindow.java14
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/windows/WindowsDisplay.java0
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/windows/WindowsScreen.java0
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/windows/WindowsWindow.java46
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/x11/X11Display.java0
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/x11/X11Screen.java0
-rw-r--r--[-rwxr-xr-x]src/newt/classes/com/jogamp/newt/impl/x11/X11Window.java53
-rw-r--r--src/newt/classes/com/jogamp/newt/opengl/GLWindow.java150
-rw-r--r--src/newt/classes/com/jogamp/newt/util/Insets.java (renamed from src/newt/classes/com/jogamp/newt/Insets.java)2
-rw-r--r--[-rwxr-xr-x]src/newt/native/BroadcomEGL.c0
-rw-r--r--[-rwxr-xr-x]src/newt/native/KDWindow.c0
-rw-r--r--[-rwxr-xr-x]src/newt/native/NewtMacWindow.m0
-rw-r--r--[-rwxr-xr-x]src/newt/native/WindowsWindow.c186
-rw-r--r--[-rwxr-xr-x]src/newt/native/X11Window.c158
-rw-r--r--[-rwxr-xr-x]test/Issue326Test1.java0
-rw-r--r--[-rwxr-xr-x]test/Issue326Test2.java0
-rw-r--r--[-rwxr-xr-x]test/Issue344Base.java0
-rw-r--r--[-rwxr-xr-x]test/Issue344Test1.java0
-rw-r--r--[-rwxr-xr-x]test/Issue344Test2.java0
-rw-r--r--[-rwxr-xr-x]test/Issue344Test3.java0
-rw-r--r--[-rwxr-xr-x]test/Issue344Test4.java0
-rw-r--r--[-rwxr-xr-x]www/2125.pdfbin561627 -> 561627 bytes
-rw-r--r--[-rwxr-xr-x]www/3167.pdfbin1159573 -> 1159573 bytes
-rw-r--r--[-rwxr-xr-x]www/BOF-3908-JOGL-slides.pdfbin546173 -> 546173 bytes
-rw-r--r--[-rwxr-xr-x]www/JOGLGlueGen.pdfbin100439 -> 100439 bytes
-rw-r--r--www/alm-process/snippets/page.xml2
-rw-r--r--[-rwxr-xr-x]www/artofillusion.jpgbin10066 -> 10066 bytes
-rw-r--r--[-rwxr-xr-x]www/avengina.jpgbin6944 -> 6944 bytes
-rw-r--r--[-rwxr-xr-x]www/bof0899.pdfbin233291 -> 233291 bytes
-rw-r--r--[-rwxr-xr-x]www/chronotext.jpgbin9953 -> 9953 bytes
-rwxr-xr-xwww/dukebeanem.jpgbin4743 -> 0 bytes
-rw-r--r--www/elflight.pngbin521109 -> 0 bytes
-rw-r--r--www/elflightengine-160x122.pngbin0 -> 39384 bytes
-rw-r--r--[-rwxr-xr-x]www/fenggui.jpgbin6144 -> 6144 bytes
-rw-r--r--[-rwxr-xr-x]www/fusion-laboratory.jpgbin34042 -> 34042 bytes
-rw-r--r--[-rwxr-xr-x]www/glstudio.jpgbin12433 -> 12433 bytes
-rw-r--r--[-rwxr-xr-x]www/impact.jpgbin6980 -> 6980 bytes
-rw-r--r--www/index.html15
-rw-r--r--[-rwxr-xr-x]www/jackflowers.jpgbin8558 -> 8558 bytes
-rw-r--r--[-rwxr-xr-x]www/jake2.jpgbin9158 -> 9158 bytes
-rw-r--r--[-rwxr-xr-x]www/madlix.pngbin25107 -> 25107 bytes
-rw-r--r--[-rwxr-xr-x]www/mbt.jpgbin18896 -> 18896 bytes
-rw-r--r--[-rwxr-xr-x]www/processing.jpgbin11258 -> 11258 bytes
-rw-r--r--[-rwxr-xr-x]www/raceview.jpgbin7694 -> 7694 bytes
-rw-r--r--[-rwxr-xr-x]www/scilab.pngbin26149 -> 26149 bytes
-rw-r--r--[-rwxr-xr-x]www/sharendipity.gifbin4788 -> 4788 bytes
-rw-r--r--[-rwxr-xr-x]www/specksim.jpgbin10548 -> 10548 bytes
-rw-r--r--[-rwxr-xr-x]www/strap.jpgbin9699 -> 9699 bytes
-rw-r--r--[-rwxr-xr-x]www/ts1361.pdfbin786403 -> 786403 bytes
-rw-r--r--[-rwxr-xr-x]www/vldocking.jpgbin5372 -> 5372 bytes
-rw-r--r--www/webstart/jogl-1-1.jarbin1172141 -> 0 bytes
-rwxr-xr-xwww/webstart/jogl-1-1.jnlp36
-rw-r--r--www/webstart/jogl-jsr-231.jarbin858522 -> 0 bytes
-rw-r--r--www/webstart/jogl-jsr-231.jnlp36
-rw-r--r--www/webstart/jogl-natives-linux-1-1.jarbin307226 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-linux-jsr-231.jarbin176871 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-linux.jarbin307226 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-macosx-1-1.jarbin150272 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-macosx-jsr-231.jarbin124719 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-macosx.jarbin150272 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-solsparc-1-1.jarbin274462 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-solsparc-jsr-231.jarbin199094 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-solsparc.jarbin274462 -> 0 bytes
-rwxr-xr-xwww/webstart/jogl-natives-solx86-1-1.jarbin246911 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-solx86-jsr-231.jarbin179729 -> 0 bytes
-rwxr-xr-xwww/webstart/jogl-natives-solx86.jarbin246911 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-win32-1-1.jarbin61512 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-win32-jsr-231.jarbin57339 -> 0 bytes
-rw-r--r--www/webstart/jogl-natives-win32.jarbin61512 -> 0 bytes
-rw-r--r--www/webstart/jogl.jarbin1172141 -> 0 bytes
-rw-r--r--www/webstart/jogl.jnlp36
-rw-r--r--[-rwxr-xr-x]www/worldwind.jpgbin11862 -> 11862 bytes
393 files changed, 1651 insertions, 1067 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 39112dbf0..39112dbf0 100755..100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index 11a24e3d7..11a24e3d7 100755..100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
diff --git a/LICENSE.txt b/LICENSE.txt
index 4fadc202c..4fadc202c 100755..100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
diff --git a/README.txt b/README.txt
index efb7eb4b1..efb7eb4b1 100755..100644
--- a/README.txt
+++ b/README.txt
diff --git a/doc/TODO.txt b/doc/TODO.txt
index 8aa9e96ed..294f16cd1 100644
--- a/doc/TODO.txt
+++ b/doc/TODO.txt
@@ -1,5 +1,8 @@
+This list is probably completely out of date...
+anyone the guts to remove it? :)
+-mbien
+
Random, somewhat old to-do list:
-(See Issue Tracker on http://jogl.dev.java.net/ for current high-priority issues)
- Non-const array types must be properly released with JNI_COMMIT in
order to see side effects if the array was copied.
diff --git a/doc/deployment/JOGL-DEPLOYMENT.html b/doc/deployment/JOGL-DEPLOYMENT.html
index da5becb91..b54bc6406 100644
--- a/doc/deployment/JOGL-DEPLOYMENT.html
+++ b/doc/deployment/JOGL-DEPLOYMENT.html
@@ -21,8 +21,8 @@
<li><a href="../../../demos/www/">Demos</a></li>
<li><a href="../../../wiki/">Wiki</a></li>
<li><a href="../../../deployment/jogl-next/javadoc_public/">JavaDoc</a></li>
- <li><a href="../../blog/">Blogs</a></li>
- <li><a href="../../forum.html">Forums</a></li>
+ <li><a href="../../../blog/">Blogs</a></li>
+ <li><a href="../../../forum.html">Forums</a></li>
</ul>
</div>
<div id="main">
diff --git a/doc/differences-from-gl4java.txt b/doc/differences-from-gl4java.txt
index 9114c89cf..30c6c090b 100644
--- a/doc/differences-from-gl4java.txt
+++ b/doc/differences-from-gl4java.txt
@@ -1,3 +1,4 @@
+JOGL 1.x:
- GLContext is no longer exposed in the public API.
- No more GLAnimCanvas/GLAnimJPanel variants. To perform animation,
attach an Animator to a GLDrawable.
diff --git a/doc/userguide/index.html b/doc/userguide/index.html
index 3d693eb95..aa0645bf9 100644
--- a/doc/userguide/index.html
+++ b/doc/userguide/index.html
@@ -23,9 +23,11 @@
<li><a href="../../../deployment/jogl-next/javadoc_public/">JavaDoc</a></li>
</ul>
</div>
- <div id="main" class="fill">
-
-
+ <div id="main">
+ <div id="text" class="fill">
+ <h2><font color="red">WARNING: This document has not been updated for a long time.</font></h2>
+ <br/>
+ <br/>
<UL>
<LI> Overview
@@ -999,6 +1001,7 @@ href="http://javagaming.org/forums/index.php?topic=4217.0">"JOGL 1.1
released"</a>.
+ </div>
</div>
<div id="footer">
<div id="footer_left">
diff --git a/make/142-packages/package-list b/make/142-packages/package-list
index fecd4d4ff..fecd4d4ff 100755..100644
--- a/make/142-packages/package-list
+++ b/make/142-packages/package-list
diff --git a/make/README-zip-bundles.txt b/make/README-zip-bundles.txt
index 3fc9424b9..3fc9424b9 100755..100644
--- a/make/README-zip-bundles.txt
+++ b/make/README-zip-bundles.txt
diff --git a/make/build-junit.xml b/make/build-junit.xml
index 9b7f48987..75215b03d 100644
--- a/make/build-junit.xml
+++ b/make/build-junit.xml
@@ -24,7 +24,7 @@
<property name="java.dir.test" value="com/jogamp/test"/>
<property name="java.part.test" value="${java.dir.test}/**"/>
- <property name="batchtest.timeout" value="60000"/>
+ <property name="batchtest.timeout" value="120000"/>
</target>
diff --git a/make/config/intptr.cfg b/make/config/intptr.cfg
index c946e4851..c946e4851 100755..100644
--- a/make/config/intptr.cfg
+++ b/make/config/intptr.cfg
diff --git a/make/config/jogl/cg-common-CustomJavaCode.java b/make/config/jogl/cg-common-CustomJavaCode.java
index cdaa6f2b2..cdaa6f2b2 100755..100644
--- a/make/config/jogl/cg-common-CustomJavaCode.java
+++ b/make/config/jogl/cg-common-CustomJavaCode.java
diff --git a/make/config/jogl/cglext.cfg b/make/config/jogl/cglext.cfg
index 404a852b0..404a852b0 100755..100644
--- a/make/config/jogl/cglext.cfg
+++ b/make/config/jogl/cglext.cfg
diff --git a/make/config/jogl/egl.cfg b/make/config/jogl/egl.cfg
index c194de2d0..c194de2d0 100755..100644
--- a/make/config/jogl/egl.cfg
+++ b/make/config/jogl/egl.cfg
diff --git a/make/config/jogl/eglext.cfg b/make/config/jogl/eglext.cfg
index 40239371d..40239371d 100755..100644
--- a/make/config/jogl/eglext.cfg
+++ b/make/config/jogl/eglext.cfg
diff --git a/make/config/jogl/gdi-CustomCCode.c b/make/config/jogl/gdi-CustomCCode.c
index 0fe9ee628..0fe9ee628 100755..100644
--- a/make/config/jogl/gdi-CustomCCode.c
+++ b/make/config/jogl/gdi-CustomCCode.c
diff --git a/make/config/jogl/gl-desktop.cfg b/make/config/jogl/gl-desktop.cfg
index ce2fefe2f..ce2fefe2f 100755..100644
--- a/make/config/jogl/gl-desktop.cfg
+++ b/make/config/jogl/gl-desktop.cfg
diff --git a/make/config/jogl/gl-es1.cfg b/make/config/jogl/gl-es1.cfg
index 63905dfff..63905dfff 100755..100644
--- a/make/config/jogl/gl-es1.cfg
+++ b/make/config/jogl/gl-es1.cfg
diff --git a/make/config/jogl/gl-es2.cfg b/make/config/jogl/gl-es2.cfg
index cdfd7fef8..cdfd7fef8 100755..100644
--- a/make/config/jogl/gl-es2.cfg
+++ b/make/config/jogl/gl-es2.cfg
diff --git a/make/config/jogl/gl-headers.cfg b/make/config/jogl/gl-headers.cfg
index 5a648b582..5a648b582 100755..100644
--- a/make/config/jogl/gl-headers.cfg
+++ b/make/config/jogl/gl-headers.cfg
diff --git a/make/config/jogl/gl-if-gl.cfg b/make/config/jogl/gl-if-gl.cfg
index 1bba846e7..1bba846e7 100755..100644
--- a/make/config/jogl/gl-if-gl.cfg
+++ b/make/config/jogl/gl-if-gl.cfg
diff --git a/make/config/jogl/gl-if-gl2_es1.cfg b/make/config/jogl/gl-if-gl2_es1.cfg
index 6fe6b4b90..6fe6b4b90 100755..100644
--- a/make/config/jogl/gl-if-gl2_es1.cfg
+++ b/make/config/jogl/gl-if-gl2_es1.cfg
diff --git a/make/config/jogl/gl-if-gl2_es2.cfg b/make/config/jogl/gl-if-gl2_es2.cfg
index 63f96d906..63f96d906 100755..100644
--- a/make/config/jogl/gl-if-gl2_es2.cfg
+++ b/make/config/jogl/gl-if-gl2_es2.cfg
diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gles1.java b/make/config/jogl/gl-impl-CustomJavaCode-gles1.java
index d29fe1645..d29fe1645 100755..100644
--- a/make/config/jogl/gl-impl-CustomJavaCode-gles1.java
+++ b/make/config/jogl/gl-impl-CustomJavaCode-gles1.java
diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gles2.java b/make/config/jogl/gl-impl-CustomJavaCode-gles2.java
index e65c491a2..e65c491a2 100755..100644
--- a/make/config/jogl/gl-impl-CustomJavaCode-gles2.java
+++ b/make/config/jogl/gl-impl-CustomJavaCode-gles2.java
diff --git a/make/config/jogl/gl-macosx-nsig.cfg b/make/config/jogl/gl-macosx-nsig.cfg
index 6a4bc0a06..6a4bc0a06 100755..100644
--- a/make/config/jogl/gl-macosx-nsig.cfg
+++ b/make/config/jogl/gl-macosx-nsig.cfg
diff --git a/make/config/jogl/gl-win32-nsig.cfg b/make/config/jogl/gl-win32-nsig.cfg
index b7c4973d4..b7c4973d4 100755..100644
--- a/make/config/jogl/gl-win32-nsig.cfg
+++ b/make/config/jogl/gl-win32-nsig.cfg
diff --git a/make/config/jogl/gl-x11-nsig.cfg b/make/config/jogl/gl-x11-nsig.cfg
index bb8a76821..bb8a76821 100755..100644
--- a/make/config/jogl/gl-x11-nsig.cfg
+++ b/make/config/jogl/gl-x11-nsig.cfg
diff --git a/make/config/jogl/gl3-desktop.cfg b/make/config/jogl/gl3-desktop.cfg
index 19eef4270..19eef4270 100755..100644
--- a/make/config/jogl/gl3-desktop.cfg
+++ b/make/config/jogl/gl3-desktop.cfg
diff --git a/make/config/jogl/gl3-headers.cfg b/make/config/jogl/gl3-headers.cfg
index 8af9157cf..8af9157cf 100755..100644
--- a/make/config/jogl/gl3-headers.cfg
+++ b/make/config/jogl/gl3-headers.cfg
diff --git a/make/config/jogl/gl3ext-headers.cfg b/make/config/jogl/gl3ext-headers.cfg
index dfc4ea796..dfc4ea796 100755..100644
--- a/make/config/jogl/gl3ext-headers.cfg
+++ b/make/config/jogl/gl3ext-headers.cfg
diff --git a/make/config/jogl/glu-CustomJavaCode-base.java b/make/config/jogl/glu-CustomJavaCode-base.java
index 8d2ebe662..8d2ebe662 100755..100644
--- a/make/config/jogl/glu-CustomJavaCode-base.java
+++ b/make/config/jogl/glu-CustomJavaCode-base.java
diff --git a/make/config/jogl/glu-CustomJavaCode-gl2es1.java b/make/config/jogl/glu-CustomJavaCode-gl2es1.java
index 3f520498b..3f520498b 100755..100644
--- a/make/config/jogl/glu-CustomJavaCode-gl2es1.java
+++ b/make/config/jogl/glu-CustomJavaCode-gl2es1.java
diff --git a/make/config/jogl/glu-base.cfg b/make/config/jogl/glu-base.cfg
index d859225ec..d859225ec 100755..100644
--- a/make/config/jogl/glu-base.cfg
+++ b/make/config/jogl/glu-base.cfg
diff --git a/make/config/jogl/glu-gl2.cfg b/make/config/jogl/glu-gl2.cfg
index aec0c446a..aec0c446a 100755..100644
--- a/make/config/jogl/glu-gl2.cfg
+++ b/make/config/jogl/glu-gl2.cfg
diff --git a/make/config/jogl/glu-gl2es1.cfg b/make/config/jogl/glu-gl2es1.cfg
index af89014f4..af89014f4 100755..100644
--- a/make/config/jogl/glu-gl2es1.cfg
+++ b/make/config/jogl/glu-gl2es1.cfg
diff --git a/make/config/jogl/glx-CustomCCode.c b/make/config/jogl/glx-CustomCCode.c
index dec3f4583..dec3f4583 100755..100644
--- a/make/config/jogl/glx-CustomCCode.c
+++ b/make/config/jogl/glx-CustomCCode.c
diff --git a/make/config/jogl/glxext.cfg b/make/config/jogl/glxext.cfg
index aeed3af4e..aeed3af4e 100755..100644
--- a/make/config/jogl/glxext.cfg
+++ b/make/config/jogl/glxext.cfg
diff --git a/make/config/jogl/nsig.cfg b/make/config/jogl/nsig.cfg
index 404746cc3..404746cc3 100755..100644
--- a/make/config/jogl/nsig.cfg
+++ b/make/config/jogl/nsig.cfg
diff --git a/make/config/nativewindow/jawt-CustomJavaCode.java b/make/config/nativewindow/jawt-CustomJavaCode.java
index 3223a74b1..3223a74b1 100755..100644
--- a/make/config/nativewindow/jawt-CustomJavaCode.java
+++ b/make/config/nativewindow/jawt-CustomJavaCode.java
diff --git a/make/config/nativewindow/jawt-DrawingSurfaceInfo-CustomJavaCode.java b/make/config/nativewindow/jawt-DrawingSurfaceInfo-CustomJavaCode.java
index aad0ab261..aad0ab261 100755..100644
--- a/make/config/nativewindow/jawt-DrawingSurfaceInfo-CustomJavaCode.java
+++ b/make/config/nativewindow/jawt-DrawingSurfaceInfo-CustomJavaCode.java
diff --git a/make/jogl_wince6_vs9/gluegen-rt/gluegen-rt.vcproj b/make/jogl_wince6_vs9/gluegen-rt/gluegen-rt.vcproj
index 4f459fefd..4f459fefd 100755..100644
--- a/make/jogl_wince6_vs9/gluegen-rt/gluegen-rt.vcproj
+++ b/make/jogl_wince6_vs9/gluegen-rt/gluegen-rt.vcproj
diff --git a/make/jogl_wince6_vs9/jogl_es1/jogl_es1.vcproj b/make/jogl_wince6_vs9/jogl_es1/jogl_es1.vcproj
index a4477d0e8..a4477d0e8 100755..100644
--- a/make/jogl_wince6_vs9/jogl_es1/jogl_es1.vcproj
+++ b/make/jogl_wince6_vs9/jogl_es1/jogl_es1.vcproj
diff --git a/make/jogl_wince6_vs9/jogl_es2/jogl_es2.vcproj b/make/jogl_wince6_vs9/jogl_es2/jogl_es2.vcproj
index 1a9ad99e2..1a9ad99e2 100755..100644
--- a/make/jogl_wince6_vs9/jogl_es2/jogl_es2.vcproj
+++ b/make/jogl_wince6_vs9/jogl_es2/jogl_es2.vcproj
diff --git a/make/jogl_wince6_vs9/jogl_wince6.sln b/make/jogl_wince6_vs9/jogl_wince6.sln
index 6e466e653..6e466e653 100755..100644
--- a/make/jogl_wince6_vs9/jogl_wince6.sln
+++ b/make/jogl_wince6_vs9/jogl_wince6.sln
diff --git a/make/jogl_wince6_vs9/jogl_wince6.suo b/make/jogl_wince6_vs9/jogl_wince6.suo
index 04fda9711..04fda9711 100755..100644
--- a/make/jogl_wince6_vs9/jogl_wince6.suo
+++ b/make/jogl_wince6_vs9/jogl_wince6.suo
Binary files differ
diff --git a/make/jogl_wince6_vs9/newt/newt.vcproj b/make/jogl_wince6_vs9/newt/newt.vcproj
index dc3c635ba..dc3c635ba 100755..100644
--- a/make/jogl_wince6_vs9/newt/newt.vcproj
+++ b/make/jogl_wince6_vs9/newt/newt.vcproj
diff --git a/make/lib/wince/arm/nvap/libEGL.lib b/make/lib/wince/arm/nvap/libEGL.lib
index 46d781770..46d781770 100755..100644
--- a/make/lib/wince/arm/nvap/libEGL.lib
+++ b/make/lib/wince/arm/nvap/libEGL.lib
Binary files differ
diff --git a/make/lib/wince/arm/nvap/libGLESv1_CM.lib b/make/lib/wince/arm/nvap/libGLESv1_CM.lib
index 482ea65d7..482ea65d7 100755..100644
--- a/make/lib/wince/arm/nvap/libGLESv1_CM.lib
+++ b/make/lib/wince/arm/nvap/libGLESv1_CM.lib
Binary files differ
diff --git a/make/lib/wince/arm/nvap/libGLESv2.lib b/make/lib/wince/arm/nvap/libGLESv2.lib
index 8cf4c319f..8cf4c319f 100755..100644
--- a/make/lib/wince/arm/nvap/libGLESv2.lib
+++ b/make/lib/wince/arm/nvap/libGLESv2.lib
Binary files differ
diff --git a/make/lib/wince/arm/nvap/libKD.lib b/make/lib/wince/arm/nvap/libKD.lib
index 820a6d478..820a6d478 100755..100644
--- a/make/lib/wince/arm/nvap/libKD.lib
+++ b/make/lib/wince/arm/nvap/libKD.lib
Binary files differ
diff --git a/make/lib/wince/arm/nvap/libnvkdmain.lib b/make/lib/wince/arm/nvap/libnvkdmain.lib
index 425acfe04..425acfe04 100755..100644
--- a/make/lib/wince/arm/nvap/libnvkdmain.lib
+++ b/make/lib/wince/arm/nvap/libnvkdmain.lib
Binary files differ
diff --git a/make/lib/wince/arm/nvap/libnvomx.lib b/make/lib/wince/arm/nvap/libnvomx.lib
index e669585ee..e669585ee 100755..100644
--- a/make/lib/wince/arm/nvap/libnvomx.lib
+++ b/make/lib/wince/arm/nvap/libnvomx.lib
Binary files differ
diff --git a/make/native-taglet.properties b/make/native-taglet.properties
index 22cc2320d..22cc2320d 100755..100644
--- a/make/native-taglet.properties
+++ b/make/native-taglet.properties
diff --git a/make/scripts/java-win32-dbg.bat b/make/scripts/java-win32-dbg.bat
index 0a2020ee5..0a2020ee5 100644..100755
--- a/make/scripts/java-win32-dbg.bat
+++ b/make/scripts/java-win32-dbg.bat
diff --git a/make/scripts/java-win32.bat b/make/scripts/java-win32.bat
index 977f39f0f..977f39f0f 100644..100755
--- a/make/scripts/java-win32.bat
+++ b/make/scripts/java-win32.bat
diff --git a/make/scripts/java-win64-dbg.bat b/make/scripts/java-win64-dbg.bat
index 5f200127d..a80ec9bdf 100644..100755
--- a/make/scripts/java-win64-dbg.bat
+++ b/make/scripts/java-win64-dbg.bat
@@ -13,4 +13,10 @@ set CP_ALL=.;%BLD_DIR%\jogl\jogl.all.jar;%BLD_DIR%\nativewindow\nativewindow.all
echo CP_ALL %CP_ALL%
-%J2RE_HOME%\bin\java -classpath %CP_ALL% "-Djava.library.path=%LIB_DIR%" "-Dnativewindow.debug=all" "-Djogl.debug=all" "-Dnewt.debug=all" "-Dsun.java2d.noddraw=true" "-Dsun.awt.noerasebackground=true" %1 %2 %3 %4 %5 %6 %7 %8 %9 > java-win64-dbg.log 2>&1
+REM set D_ARGS="-Djogamp.debug.JNILibLoader=true" "-Djogamp.debug.NativeLibrary=true" "-Djogamp.debug.NativeLibrary.Lookup=true" "-Djogl.debug.GLProfile=true"
+REM set D_ARGS="-Djogl.debug=all -Dnewt.debug=all -Dnativewindow.debug=all"
+set D_ARGS="-Dnewt.debug.Window"
+
+set X_ARGS="-Dsun.java2d.noddraw=true" "-Dsun.awt.noerasebackground=true"
+
+%J2RE_HOME%\bin\java -classpath %CP_ALL% "-Djava.library.path=%LIB_DIR%" %D_ARGS% %X_ARGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 > java-win64-dbg.log 2>&1
diff --git a/make/scripts/java-win64.bat b/make/scripts/java-win64.bat
index f0d068b0e..7ce87574d 100644..100755
--- a/make/scripts/java-win64.bat
+++ b/make/scripts/java-win64.bat
@@ -10,7 +10,8 @@ set BLD_DIR=..\%BLD_SUB%
set LIB_DIR=%BLD_DIR%\lib;..\..\gluegen\%BLD_SUB%\obj
set CP_ALL=.;%BLD_DIR%\jogl\jogl.all.jar;%BLD_DIR%\nativewindow\nativewindow.all.jar;%BLD_DIR%\newt\newt.all.jar;%BLD_DIR%\jogl\jogl.test.jar;..\..\gluegen\%BLD_SUB%\gluegen-rt.jar;..\..\gluegen\make\lib\junit.jar;%ANT_PATH%\lib\ant.jar;%ANT_PATH%\lib\ant-junit.jar
-
echo CP_ALL %CP_ALL%
-%J2RE_HOME%\bin\java -classpath %CP_ALL% "-Djava.library.path=%LIB_DIR%" "-Dsun.java2d.noddraw=true" "-Dsun.awt.noerasebackground=true" %1 %2 %3 %4 %5 %6 %7 %8 %9 > java-win64.log 2>&1
+set X_ARGS="-Dsun.java2d.noddraw=true" "-Dsun.awt.noerasebackground=true"
+
+%J2RE_HOME%\bin\java -classpath %CP_ALL% "-Djava.library.path=%LIB_DIR%" %X_ARGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 > java-win64.log 2>&1
diff --git a/make/scripts/lsGL23_commons.sh b/make/scripts/lsGL23_commons.sh
index 7c7161717..7c7161717 100644..100755
--- a/make/scripts/lsGL23_commons.sh
+++ b/make/scripts/lsGL23_commons.sh
diff --git a/make/scripts/lsGL23_unique.sh b/make/scripts/lsGL23_unique.sh
index e21112ecc..e21112ecc 100644..100755
--- a/make/scripts/lsGL23_unique.sh
+++ b/make/scripts/lsGL23_unique.sh
diff --git a/make/scripts/lsGL23toGL2ES1_commons.sh b/make/scripts/lsGL23toGL2ES1_commons.sh
index 83a543b3c..83a543b3c 100644..100755
--- a/make/scripts/lsGL23toGL2ES1_commons.sh
+++ b/make/scripts/lsGL23toGL2ES1_commons.sh
diff --git a/make/scripts/lsGLES2toGL3_commons.sh b/make/scripts/lsGLES2toGL3_commons.sh
index d271b7ea2..d271b7ea2 100644..100755
--- a/make/scripts/lsGLES2toGL3_commons.sh
+++ b/make/scripts/lsGLES2toGL3_commons.sh
diff --git a/make/scripts/lsGLtoES1ES2_commons.sh b/make/scripts/lsGLtoES1ES2_commons.sh
index 21efb6549..21efb6549 100644..100755
--- a/make/scripts/lsGLtoES1ES2_commons.sh
+++ b/make/scripts/lsGLtoES1ES2_commons.sh
diff --git a/make/scripts/lsGLtoES1_commons.sh b/make/scripts/lsGLtoES1_commons.sh
index e8a370acb..e8a370acb 100644..100755
--- a/make/scripts/lsGLtoES1_commons.sh
+++ b/make/scripts/lsGLtoES1_commons.sh
diff --git a/make/scripts/lsGLtoES2_commons.sh b/make/scripts/lsGLtoES2_commons.sh
index bbd0e239c..bbd0e239c 100644..100755
--- a/make/scripts/lsGLtoES2_commons.sh
+++ b/make/scripts/lsGLtoES2_commons.sh
diff --git a/make/scripts/lsGLtoGL3_commons.sh b/make/scripts/lsGLtoGL3_commons.sh
index 44cc34ccd..44cc34ccd 100644..100755
--- a/make/scripts/lsGLtoGL3_commons.sh
+++ b/make/scripts/lsGLtoGL3_commons.sh
diff --git a/make/scripts/lstjars.sh b/make/scripts/lstjars.sh
index 3837be5e3..3837be5e3 100644..100755
--- a/make/scripts/lstjars.sh
+++ b/make/scripts/lstjars.sh
diff --git a/make/scripts/make.jogl.all.linux-x86.sh b/make/scripts/make.jogl.all.linux-x86.sh
index 76b46a03b..76b46a03b 100644..100755
--- a/make/scripts/make.jogl.all.linux-x86.sh
+++ b/make/scripts/make.jogl.all.linux-x86.sh
diff --git a/make/scripts/make.jogl.all.linux-x86_64.sh b/make/scripts/make.jogl.all.linux-x86_64.sh
index 220848693..220848693 100644..100755
--- a/make/scripts/make.jogl.all.linux-x86_64.sh
+++ b/make/scripts/make.jogl.all.linux-x86_64.sh
diff --git a/make/scripts/make.jogl.all.macosx.sh b/make/scripts/make.jogl.all.macosx.sh
index a85f9344f..a85f9344f 100644..100755
--- a/make/scripts/make.jogl.all.macosx.sh
+++ b/make/scripts/make.jogl.all.macosx.sh
diff --git a/make/scripts/make.jogl.all.win32.bat b/make/scripts/make.jogl.all.win32.bat
index 528e153aa..528e153aa 100644..100755
--- a/make/scripts/make.jogl.all.win32.bat
+++ b/make/scripts/make.jogl.all.win32.bat
diff --git a/make/scripts/make.jogl.all.win64.bat b/make/scripts/make.jogl.all.win64.bat
index b8d8cc662..b8d8cc662 100644..100755
--- a/make/scripts/make.jogl.all.win64.bat
+++ b/make/scripts/make.jogl.all.win64.bat
diff --git a/make/scripts/make.jogl.cdcfp.linux-x86.sh b/make/scripts/make.jogl.cdcfp.linux-x86.sh
index ad80f194d..ad80f194d 100644..100755
--- a/make/scripts/make.jogl.cdcfp.linux-x86.sh
+++ b/make/scripts/make.jogl.cdcfp.linux-x86.sh
diff --git a/make/scripts/make.jogl.cdcfp.macosx.sh b/make/scripts/make.jogl.cdcfp.macosx.sh
index d36f0bb7e..d36f0bb7e 100644..100755
--- a/make/scripts/make.jogl.cdcfp.macosx.sh
+++ b/make/scripts/make.jogl.cdcfp.macosx.sh
diff --git a/make/scripts/make.jogl.doc.all.x86_64.sh b/make/scripts/make.jogl.doc.all.x86_64.sh
index 3711171af..3711171af 100644..100755
--- a/make/scripts/make.jogl.doc.all.x86_64.sh
+++ b/make/scripts/make.jogl.doc.all.x86_64.sh
diff --git a/make/scripts/make.jogl.doc.x86_64.sh b/make/scripts/make.jogl.doc.x86_64.sh
index daf09ec33..daf09ec33 100644..100755
--- a/make/scripts/make.jogl.doc.x86_64.sh
+++ b/make/scripts/make.jogl.doc.x86_64.sh
diff --git a/make/scripts/setenv-jogl.sh b/make/scripts/setenv-jogl.sh
index 76fa40fc5..76fa40fc5 100644..100755
--- a/make/scripts/setenv-jogl.sh
+++ b/make/scripts/setenv-jogl.sh
diff --git a/make/stub_includes/cg/CG/cg_enums.h b/make/stub_includes/cg/CG/cg_enums.h
index cb7262feb..cb7262feb 100755..100644
--- a/make/stub_includes/cg/CG/cg_enums.h
+++ b/make/stub_includes/cg/CG/cg_enums.h
diff --git a/make/stub_includes/egl/EGL/egl.h b/make/stub_includes/egl/EGL/egl.h
index a384bab48..a384bab48 100755..100644
--- a/make/stub_includes/egl/EGL/egl.h
+++ b/make/stub_includes/egl/EGL/egl.h
diff --git a/make/stub_includes/egl/EGL/eglext.h b/make/stub_includes/egl/EGL/eglext.h
index 7d7347e71..7d7347e71 100755..100644
--- a/make/stub_includes/egl/EGL/eglext.h
+++ b/make/stub_includes/egl/EGL/eglext.h
diff --git a/make/stub_includes/egl/EGL/eglplatform.h b/make/stub_includes/egl/EGL/eglplatform.h
index 5e4fa73f3..5e4fa73f3 100755..100644
--- a/make/stub_includes/egl/EGL/eglplatform.h
+++ b/make/stub_includes/egl/EGL/eglplatform.h
diff --git a/make/stub_includes/egl/KD/NV_extwindowprops.h b/make/stub_includes/egl/KD/NV_extwindowprops.h
index e7a16c727..e7a16c727 100755..100644
--- a/make/stub_includes/egl/KD/NV_extwindowprops.h
+++ b/make/stub_includes/egl/KD/NV_extwindowprops.h
diff --git a/make/stub_includes/egl/KD/NV_multitouch.h b/make/stub_includes/egl/KD/NV_multitouch.h
index 5a9b9243b..5a9b9243b 100755..100644
--- a/make/stub_includes/egl/KD/NV_multitouch.h
+++ b/make/stub_includes/egl/KD/NV_multitouch.h
diff --git a/make/stub_includes/egl/KD/kd.h b/make/stub_includes/egl/KD/kd.h
index c82385b86..c82385b86 100755..100644
--- a/make/stub_includes/egl/KD/kd.h
+++ b/make/stub_includes/egl/KD/kd.h
diff --git a/make/stub_includes/egl/KD/kdplatform.h b/make/stub_includes/egl/KD/kdplatform.h
index 5e3ebebdf..5e3ebebdf 100755..100644
--- a/make/stub_includes/egl/KD/kdplatform.h
+++ b/make/stub_includes/egl/KD/kdplatform.h
diff --git a/make/stub_includes/egl/window-system-ext.c b/make/stub_includes/egl/window-system-ext.c
index 7398847ac..7398847ac 100755..100644
--- a/make/stub_includes/egl/window-system-ext.c
+++ b/make/stub_includes/egl/window-system-ext.c
diff --git a/make/stub_includes/egl/window-system1.c b/make/stub_includes/egl/window-system1.c
index fbd0f0cde..fbd0f0cde 100755..100644
--- a/make/stub_includes/egl/window-system1.c
+++ b/make/stub_includes/egl/window-system1.c
diff --git a/make/stub_includes/jni/classfile_constants.h b/make/stub_includes/jni/classfile_constants.h
index 6546436a6..6546436a6 100755..100644
--- a/make/stub_includes/jni/classfile_constants.h
+++ b/make/stub_includes/jni/classfile_constants.h
diff --git a/make/stub_includes/jni/jawt.h b/make/stub_includes/jni/jawt.h
index f5eea9b46..f5eea9b46 100755..100644
--- a/make/stub_includes/jni/jawt.h
+++ b/make/stub_includes/jni/jawt.h
diff --git a/make/stub_includes/jni/jdwpTransport.h b/make/stub_includes/jni/jdwpTransport.h
index fc46ca48e..fc46ca48e 100755..100644
--- a/make/stub_includes/jni/jdwpTransport.h
+++ b/make/stub_includes/jni/jdwpTransport.h
diff --git a/make/stub_includes/jni/jni.h b/make/stub_includes/jni/jni.h
index f53476c09..f53476c09 100755..100644
--- a/make/stub_includes/jni/jni.h
+++ b/make/stub_includes/jni/jni.h
diff --git a/make/stub_includes/jni/jvmti.h b/make/stub_includes/jni/jvmti.h
index 4cb89df17..4cb89df17 100755..100644
--- a/make/stub_includes/jni/jvmti.h
+++ b/make/stub_includes/jni/jvmti.h
diff --git a/make/stub_includes/jni/win32/jawt_md.h b/make/stub_includes/jni/win32/jawt_md.h
index 2e1fa52f5..2e1fa52f5 100755..100644
--- a/make/stub_includes/jni/win32/jawt_md.h
+++ b/make/stub_includes/jni/win32/jawt_md.h
diff --git a/make/stub_includes/jni/win32/jni_md.h b/make/stub_includes/jni/win32/jni_md.h
index 9f0cfa463..9f0cfa463 100755..100644
--- a/make/stub_includes/jni/win32/jni_md.h
+++ b/make/stub_includes/jni/win32/jni_md.h
diff --git a/make/stub_includes/macosx/cglext.c b/make/stub_includes/macosx/cglext.c
index 14010fcc4..14010fcc4 100755..100644
--- a/make/stub_includes/macosx/cglext.c
+++ b/make/stub_includes/macosx/cglext.c
diff --git a/make/stub_includes/opengl/GL3/gl3.h b/make/stub_includes/opengl/GL3/gl3.h
index 8bdff4644..8bdff4644 100755..100644
--- a/make/stub_includes/opengl/GL3/gl3.h
+++ b/make/stub_includes/opengl/GL3/gl3.h
diff --git a/make/stub_includes/opengl/GLES/gl.h b/make/stub_includes/opengl/GLES/gl.h
index 41afe2239..41afe2239 100755..100644
--- a/make/stub_includes/opengl/GLES/gl.h
+++ b/make/stub_includes/opengl/GLES/gl.h
diff --git a/make/stub_includes/opengl/GLES/glext.h b/make/stub_includes/opengl/GLES/glext.h
index f9e181dd0..f9e181dd0 100755..100644
--- a/make/stub_includes/opengl/GLES/glext.h
+++ b/make/stub_includes/opengl/GLES/glext.h
diff --git a/make/stub_includes/opengl/GLES/glplatform.h b/make/stub_includes/opengl/GLES/glplatform.h
index dd2f20ec3..dd2f20ec3 100755..100644
--- a/make/stub_includes/opengl/GLES/glplatform.h
+++ b/make/stub_includes/opengl/GLES/glplatform.h
diff --git a/make/stub_includes/opengl/GLES/glu.h b/make/stub_includes/opengl/GLES/glu.h
index 50a94f34e..50a94f34e 100755..100644
--- a/make/stub_includes/opengl/GLES/glu.h
+++ b/make/stub_includes/opengl/GLES/glu.h
diff --git a/make/stub_includes/opengl/GLES2/gl2.h b/make/stub_includes/opengl/GLES2/gl2.h
index 44338000e..44338000e 100755..100644
--- a/make/stub_includes/opengl/GLES2/gl2.h
+++ b/make/stub_includes/opengl/GLES2/gl2.h
diff --git a/make/stub_includes/opengl/GLES2/gl2ext.h b/make/stub_includes/opengl/GLES2/gl2ext.h
index e3bbede8a..e3bbede8a 100755..100644
--- a/make/stub_includes/opengl/GLES2/gl2ext.h
+++ b/make/stub_includes/opengl/GLES2/gl2ext.h
diff --git a/make/stub_includes/opengl/gles1.c b/make/stub_includes/opengl/gles1.c
index 63df1c967..63df1c967 100755..100644
--- a/make/stub_includes/opengl/gles1.c
+++ b/make/stub_includes/opengl/gles1.c
diff --git a/make/stub_includes/opengl/gles2.c b/make/stub_includes/opengl/gles2.c
index f74b1686f..f74b1686f 100755..100644
--- a/make/stub_includes/opengl/gles2.c
+++ b/make/stub_includes/opengl/gles2.c
diff --git a/make/stub_includes/openmax/NVOMX_ComponentBase.h b/make/stub_includes/openmax/NVOMX_ComponentBase.h
index 00d1d1217..00d1d1217 100755..100644
--- a/make/stub_includes/openmax/NVOMX_ComponentBase.h
+++ b/make/stub_includes/openmax/NVOMX_ComponentBase.h
diff --git a/make/stub_includes/openmax/NVOMX_ComponentRegister.h b/make/stub_includes/openmax/NVOMX_ComponentRegister.h
index 550dd5912..550dd5912 100755..100644
--- a/make/stub_includes/openmax/NVOMX_ComponentRegister.h
+++ b/make/stub_includes/openmax/NVOMX_ComponentRegister.h
diff --git a/make/stub_includes/openmax/NVOMX_IndexExtensions.h b/make/stub_includes/openmax/NVOMX_IndexExtensions.h
index 5a312f255..5a312f255 100755..100644
--- a/make/stub_includes/openmax/NVOMX_IndexExtensions.h
+++ b/make/stub_includes/openmax/NVOMX_IndexExtensions.h
diff --git a/make/stub_includes/openmax/OMX_Audio.h b/make/stub_includes/openmax/OMX_Audio.h
index ef9b51fde..ef9b51fde 100755..100644
--- a/make/stub_includes/openmax/OMX_Audio.h
+++ b/make/stub_includes/openmax/OMX_Audio.h
diff --git a/make/stub_includes/openmax/OMX_Component.h b/make/stub_includes/openmax/OMX_Component.h
index 7f3ea777b..7f3ea777b 100755..100644
--- a/make/stub_includes/openmax/OMX_Component.h
+++ b/make/stub_includes/openmax/OMX_Component.h
diff --git a/make/stub_includes/openmax/OMX_ContentPipe.h b/make/stub_includes/openmax/OMX_ContentPipe.h
index c27dc9854..c27dc9854 100755..100644
--- a/make/stub_includes/openmax/OMX_ContentPipe.h
+++ b/make/stub_includes/openmax/OMX_ContentPipe.h
diff --git a/make/stub_includes/openmax/OMX_Core.h b/make/stub_includes/openmax/OMX_Core.h
index aecbf2b7f..aecbf2b7f 100755..100644
--- a/make/stub_includes/openmax/OMX_Core.h
+++ b/make/stub_includes/openmax/OMX_Core.h
diff --git a/make/stub_includes/openmax/OMX_IVCommon.h b/make/stub_includes/openmax/OMX_IVCommon.h
index 17ccdee1f..17ccdee1f 100755..100644
--- a/make/stub_includes/openmax/OMX_IVCommon.h
+++ b/make/stub_includes/openmax/OMX_IVCommon.h
diff --git a/make/stub_includes/openmax/OMX_Image.h b/make/stub_includes/openmax/OMX_Image.h
index 8a0ee5bca..8a0ee5bca 100755..100644
--- a/make/stub_includes/openmax/OMX_Image.h
+++ b/make/stub_includes/openmax/OMX_Image.h
diff --git a/make/stub_includes/openmax/OMX_Index.h b/make/stub_includes/openmax/OMX_Index.h
index ff7c6f5f9..ff7c6f5f9 100755..100644
--- a/make/stub_includes/openmax/OMX_Index.h
+++ b/make/stub_includes/openmax/OMX_Index.h
diff --git a/make/stub_includes/openmax/OMX_Other.h b/make/stub_includes/openmax/OMX_Other.h
index dd2bb8deb..dd2bb8deb 100755..100644
--- a/make/stub_includes/openmax/OMX_Other.h
+++ b/make/stub_includes/openmax/OMX_Other.h
diff --git a/make/stub_includes/openmax/OMX_Types.h b/make/stub_includes/openmax/OMX_Types.h
index 2c2d1bb85..2c2d1bb85 100755..100644
--- a/make/stub_includes/openmax/OMX_Types.h
+++ b/make/stub_includes/openmax/OMX_Types.h
diff --git a/make/stub_includes/openmax/OMX_Video.h b/make/stub_includes/openmax/OMX_Video.h
index f75614005..f75614005 100755..100644
--- a/make/stub_includes/openmax/OMX_Video.h
+++ b/make/stub_includes/openmax/OMX_Video.h
diff --git a/make/stub_includes/win32/wglext.c b/make/stub_includes/win32/wglext.c
index 9c6120411..9c6120411 100755..100644
--- a/make/stub_includes/win32/wglext.c
+++ b/make/stub_includes/win32/wglext.c
diff --git a/nbproject/project.xml b/nbproject/project.xml
index 55eca73f7..55eca73f7 100755..100644
--- a/nbproject/project.xml
+++ b/nbproject/project.xml
diff --git a/src/jogl/classes/com/jogamp/audio/windows/waveout/Audio.java b/src/jogl/classes/com/jogamp/audio/windows/waveout/Audio.java
index 2b51be164..2b51be164 100755..100644
--- a/src/jogl/classes/com/jogamp/audio/windows/waveout/Audio.java
+++ b/src/jogl/classes/com/jogamp/audio/windows/waveout/Audio.java
diff --git a/src/jogl/classes/com/jogamp/audio/windows/waveout/Mixer.java b/src/jogl/classes/com/jogamp/audio/windows/waveout/Mixer.java
index 60972873e..60972873e 100755..100644
--- a/src/jogl/classes/com/jogamp/audio/windows/waveout/Mixer.java
+++ b/src/jogl/classes/com/jogamp/audio/windows/waveout/Mixer.java
diff --git a/src/jogl/classes/com/jogamp/audio/windows/waveout/SoundBuffer.java b/src/jogl/classes/com/jogamp/audio/windows/waveout/SoundBuffer.java
index c45430d23..c45430d23 100755..100644
--- a/src/jogl/classes/com/jogamp/audio/windows/waveout/SoundBuffer.java
+++ b/src/jogl/classes/com/jogamp/audio/windows/waveout/SoundBuffer.java
diff --git a/src/jogl/classes/com/jogamp/audio/windows/waveout/TestSpatialization.java b/src/jogl/classes/com/jogamp/audio/windows/waveout/TestSpatialization.java
index 78fb3493f..78fb3493f 100755..100644
--- a/src/jogl/classes/com/jogamp/audio/windows/waveout/TestSpatialization.java
+++ b/src/jogl/classes/com/jogamp/audio/windows/waveout/TestSpatialization.java
diff --git a/src/jogl/classes/com/jogamp/audio/windows/waveout/Track.java b/src/jogl/classes/com/jogamp/audio/windows/waveout/Track.java
index b57bf1dc6..b57bf1dc6 100755..100644
--- a/src/jogl/classes/com/jogamp/audio/windows/waveout/Track.java
+++ b/src/jogl/classes/com/jogamp/audio/windows/waveout/Track.java
diff --git a/src/jogl/classes/com/jogamp/audio/windows/waveout/Vec3f.java b/src/jogl/classes/com/jogamp/audio/windows/waveout/Vec3f.java
index 1afdaf081..1afdaf081 100755..100644
--- a/src/jogl/classes/com/jogamp/audio/windows/waveout/Vec3f.java
+++ b/src/jogl/classes/com/jogamp/audio/windows/waveout/Vec3f.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java b/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java
index 57a69af4c..57a69af4c 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java b/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java
index 4aeea9d42..4aeea9d42 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLBufferSizeTracker.java b/src/jogl/classes/com/jogamp/opengl/impl/GLBufferSizeTracker.java
index b4237501e..b4237501e 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLBufferSizeTracker.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLBufferSizeTracker.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLBufferStateTracker.java b/src/jogl/classes/com/jogamp/opengl/impl/GLBufferStateTracker.java
index 05b2a2fa9..05b2a2fa9 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLBufferStateTracker.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLBufferStateTracker.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java b/src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java
index 54d9b4e80..9fcddbbfa 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java
@@ -641,7 +641,7 @@ public abstract class GLContextImpl extends GLContext {
//
private Object createInstance(GLProfile glp, String suffix, Class[] cstrArgTypes, Object[] cstrArgs) {
- return ReflectionUtil.createInstance(glp.getGLImplBaseClassName()+suffix, getClass().getClassLoader(), cstrArgTypes, cstrArgs);
+ return ReflectionUtil.createInstance(glp.getGLImplBaseClassName()+suffix, cstrArgTypes, cstrArgs, getClass().getClassLoader());
}
/** Create the GL for this context. */
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLDrawableHelper.java b/src/jogl/classes/com/jogamp/opengl/impl/GLDrawableHelper.java
index 8fefe149e..1e954af1d 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLDrawableHelper.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLDrawableHelper.java
@@ -46,75 +46,123 @@ import javax.media.opengl.*;
methods to be able to share it between GLCanvas and GLJPanel. */
public class GLDrawableHelper {
- private volatile List listeners = new ArrayList();
private static final boolean DEBUG = Debug.debug("GLDrawableHelper");
private static final boolean VERBOSE = Debug.verbose();
- private static final boolean NVIDIA_CRASH_WORKAROUND = Debug.isPropertyDefined("jogl.nvidia.crash.workaround", true);
+ private Object listenersLock = new Object();
+ private List listeners = new ArrayList();
+ private Set listenersToBeInit = new HashSet();
private boolean autoSwapBufferMode = true;
+ private Object glRunnablesLock = new Object();
private ArrayList glRunnables = new ArrayList(); // one shot GL tasks
+ private Thread animatorThread = null; // default
public GLDrawableHelper() {
}
- public synchronized String toString() {
+ public String toString() {
StringBuffer sb = new StringBuffer();
- sb.append("GLEventListeners num "+listeners.size()+" [");
- for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
- sb.append(iter.next()+", ");
+ synchronized(listenersLock) {
+ sb.append("GLEventListeners num "+listeners.size()+" [");
+ for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
+ Object l = iter.next();
+ sb.append(l);
+ sb.append("[init ");
+ sb.append( !listenersToBeInit.contains(l) );
+ sb.append("], ");
+ }
}
sb.append("]");
return sb.toString();
}
- public synchronized void addGLEventListener(GLEventListener listener) {
+ public void addGLEventListener(GLEventListener listener) {
addGLEventListener(-1, listener);
}
- public synchronized void addGLEventListener(int index, GLEventListener listener) {
- if(0>index) {
- index = listeners.size();
+ public void addGLEventListener(int index, GLEventListener listener) {
+ synchronized(listenersLock) {
+ if(0>index) {
+ index = listeners.size();
+ }
+ listenersToBeInit.add(listener);
+ listeners.add(index, listener);
}
- List newListeners = (List) ((ArrayList) listeners).clone();
- newListeners.add(index, listener);
- listeners = newListeners;
}
- public synchronized void removeGLEventListener(GLEventListener listener) {
- List newListeners = (List) ((ArrayList) listeners).clone();
- newListeners.remove(listener);
- listeners = newListeners;
+ public void removeGLEventListener(GLEventListener listener) {
+ synchronized(listenersLock) {
+ listeners.remove(listener);
+ listenersToBeInit.remove(listener);
+ }
}
- public synchronized void dispose(GLAutoDrawable drawable) {
- for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
- ((GLEventListener) iter.next()).dispose(drawable);
+ public void dispose(GLAutoDrawable drawable) {
+ synchronized(listenersLock) {
+ for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
+ GLEventListener listener = (GLEventListener) iter.next() ;
+ listener.dispose(drawable);
+ listenersToBeInit.add(listener);
+ }
}
}
+ private final boolean init(GLEventListener l, GLAutoDrawable drawable, boolean sendReshape) {
+ if(listenersToBeInit.remove(l)) {
+ l.init(drawable);
+ if(sendReshape) {
+ reshape(l, drawable, 0, 0, drawable.getWidth(), drawable.getHeight(), true /* setViewport */);
+ }
+ return true;
+ }
+ return false;
+ }
+
public void init(GLAutoDrawable drawable) {
- for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
- ((GLEventListener) iter.next()).init(drawable);
+ synchronized(listenersLock) {
+ for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
+ GLEventListener listener = (GLEventListener) iter.next() ;
+ if ( ! init( listener, drawable, false ) ) {
+ throw new GLException("GLEventListener "+listener+" already initialized: "+drawable);
+ }
+ }
}
}
public void display(GLAutoDrawable drawable) {
- for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
- ((GLEventListener) iter.next()).display(drawable);
+ synchronized(listenersLock) {
+ for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
+ GLEventListener listener = (GLEventListener) iter.next() ;
+ // GLEventListener may need to be init,
+ // in case this one is added after the realization of the GLAutoDrawable
+ init( listener, drawable, true ) ;
+ listener.display(drawable);
+ }
}
execGLRunnables(drawable);
}
- public void reshape(GLAutoDrawable drawable,
- int x, int y, int width, int height) {
- for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
- ((GLEventListener) iter.next()).reshape(drawable, x, y, width, height);
+ private final void reshape(GLEventListener listener, GLAutoDrawable drawable,
+ int x, int y, int width, int height, boolean setViewport) {
+ if(setViewport) {
+ drawable.getGL().glViewport(x, y, width, height);
+ }
+ listener.reshape(drawable, x, y, width, height);
+ }
+
+ public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
+ synchronized(listenersLock) {
+ int i=0;
+ for (Iterator iter = listeners.iterator(); iter.hasNext(); i++) {
+ reshape((GLEventListener) iter.next(), drawable, x, y, width, height, 0==i);
+ }
}
}
private void execGLRunnables(GLAutoDrawable drawable) {
if(glRunnables.size()>0) {
+ // swap one-shot list asap
ArrayList _glRunnables = null;
- synchronized(glRunnables) {
+ synchronized(glRunnablesLock) {
if(glRunnables.size()>0) {
_glRunnables = glRunnables;
glRunnables = new ArrayList();
@@ -128,23 +176,38 @@ public class GLDrawableHelper {
}
}
- private void invokeLater(GLRunnable glRunnable) {
- synchronized(glRunnables) {
- glRunnables.add(glRunnable);
- glRunnables.notifyAll();
+ public void setAnimator(Thread animator) throws GLException {
+ synchronized(glRunnablesLock) {
+ if(animator!=animatorThread && null!=animator && null!=animatorThread) {
+ throw new GLException("Trying to register animator thread "+animator+", where "+animatorThread+" is already registered. Unregister first.");
+ }
+ animatorThread = animator;
+ }
+ }
+
+ public Thread getAnimator() {
+ synchronized(glRunnablesLock) {
+ return animatorThread;
}
}
- public void invoke(boolean wait, GLRunnable glRunnable) {
- if(glRunnable == null) {
+ public void invoke(GLAutoDrawable drawable, boolean wait, GLRunnable glRunnable) {
+ if( null == drawable || null == glRunnable ) {
return;
}
- Object lock = new Object();
- GLRunnableTask rTask = new GLRunnableTask(glRunnable, wait?lock:null/*, true*/);
Throwable throwable = null;
+ Object lock = new Object();
+ GLRunnableTask rTask = null;
synchronized(lock) {
- invokeLater(rTask);
- if( wait ) {
+ boolean callDisplay;
+ synchronized(glRunnablesLock) {
+ callDisplay = null == animatorThread || animatorThread == Thread.currentThread() ;
+ rTask = new GLRunnableTask(glRunnable, ( !callDisplay && wait ) ? lock : null);
+ glRunnables.add(rTask);
+ }
+ if( callDisplay ) {
+ drawable.display();
+ } else if( wait ) {
try {
lock.wait();
} catch (InterruptedException ie) {
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLibraryBundleInfo.java b/src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLibraryBundleInfo.java
index dd196c4a1..dd196c4a1 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLibraryBundleInfo.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLibraryBundleInfo.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLookupHelper.java b/src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLookupHelper.java
index 89dbb4a78..89dbb4a78 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLookupHelper.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLDynamicLookupHelper.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLPbufferImpl.java b/src/jogl/classes/com/jogamp/opengl/impl/GLPbufferImpl.java
index 071ac1378..c2efb3f4e 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLPbufferImpl.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLPbufferImpl.java
@@ -138,8 +138,16 @@ public class GLPbufferImpl implements GLPbuffer {
drawableHelper.removeGLEventListener(listener);
}
+ public void setAnimator(Thread animator) {
+ drawableHelper.setAnimator(animator);
+ }
+
+ public Thread getAnimator() {
+ return drawableHelper.getAnimator();
+ }
+
public void invoke(boolean wait, GLRunnable glRunnable) {
- drawableHelper.invoke(wait, glRunnable);
+ drawableHelper.invoke(this, wait, glRunnable);
}
public void setContext(GLContext ctx) {
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLStateTracker.java b/src/jogl/classes/com/jogamp/opengl/impl/GLStateTracker.java
index 9d896b7f8..9d896b7f8 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLStateTracker.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLStateTracker.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLWorkerThread.java b/src/jogl/classes/com/jogamp/opengl/impl/GLWorkerThread.java
index 768eea3f7..768eea3f7 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLWorkerThread.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLWorkerThread.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/ProjectFloat.java b/src/jogl/classes/com/jogamp/opengl/impl/ProjectFloat.java
index ab277e704..ab277e704 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/ProjectFloat.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/ProjectFloat.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/awt/AWTThreadingPlugin.java b/src/jogl/classes/com/jogamp/opengl/impl/awt/AWTThreadingPlugin.java
index 07bf2f2db..07bf2f2db 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/awt/AWTThreadingPlugin.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/awt/AWTThreadingPlugin.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/awt/Java2D.java b/src/jogl/classes/com/jogamp/opengl/impl/awt/Java2D.java
index b871c66a7..b871c66a7 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/awt/Java2D.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/awt/Java2D.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java
index 5671b033d..5671b033d 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawable.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawable.java
index 7eeb19141..7eeb19141 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawable.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawable.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawableFactory.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawableFactory.java
index 72498a7af..72498a7af 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawableFactory.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDrawableFactory.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDynamicLibraryBundleInfo.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDynamicLibraryBundleInfo.java
index 675be64b5..675be64b5 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDynamicLibraryBundleInfo.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLDynamicLibraryBundleInfo.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES1DynamicLibraryBundleInfo.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES1DynamicLibraryBundleInfo.java
index aad25edc4..aad25edc4 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES1DynamicLibraryBundleInfo.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES1DynamicLibraryBundleInfo.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES2DynamicLibraryBundleInfo.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES2DynamicLibraryBundleInfo.java
index 9691b2bd0..9691b2bd0 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES2DynamicLibraryBundleInfo.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLES2DynamicLibraryBundleInfo.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLExternalContext.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLExternalContext.java
index ae8b5bf70..ae8b5bf70 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLExternalContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLExternalContext.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLOnscreenContext.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLOnscreenContext.java
index cb8b01d8d..cb8b01d8d 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLOnscreenContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLOnscreenContext.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLPbufferContext.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLPbufferContext.java
index 5c634b9bd..5c634b9bd 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLPbufferContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLPbufferContext.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/gl2/ProjectDouble.java b/src/jogl/classes/com/jogamp/opengl/impl/gl2/ProjectDouble.java
index 98cc3f323..98cc3f323 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/gl2/ProjectDouble.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/gl2/ProjectDouble.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/gl2/fixme/GLObjectTracker.java b/src/jogl/classes/com/jogamp/opengl/impl/gl2/fixme/GLObjectTracker.java
index 3e3b6ae87..3e3b6ae87 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/gl2/fixme/GLObjectTracker.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/gl2/fixme/GLObjectTracker.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/Glue.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/Glue.java
index 7c360c574..7c360c574 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/Glue.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/Glue.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2Backend.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2Backend.java
index 42ddeea50..42ddeea50 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2Backend.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2Backend.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2CurveEvaluator.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2CurveEvaluator.java
index adb8c51d8..adb8c51d8 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2CurveEvaluator.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2CurveEvaluator.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2SurfaceEvaluator.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2SurfaceEvaluator.java
index 393601ff7..393601ff7 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2SurfaceEvaluator.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GL2SurfaceEvaluator.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GLUgl2nurbsImpl.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GLUgl2nurbsImpl.java
index 13b68138c..13b68138c 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GLUgl2nurbsImpl.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/gl2/nurbs/GLUgl2nurbsImpl.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Arc.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Arc.java
index 9ee2494a1..9ee2494a1 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Arc.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Arc.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcSdirSorter.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcSdirSorter.java
index 3955e3176..3955e3176 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcSdirSorter.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcSdirSorter.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTdirSorter.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTdirSorter.java
index 098ba97b7..098ba97b7 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTdirSorter.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTdirSorter.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTesselator.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTesselator.java
index edfb8905f..edfb8905f 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTesselator.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/ArcTesselator.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Backend.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Backend.java
index 39097720c..39097720c 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Backend.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Backend.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/BezierArc.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/BezierArc.java
index d9b390b67..d9b390b67 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/BezierArc.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/BezierArc.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Bin.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Bin.java
index 61316f348..61316f348 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Bin.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Bin.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Breakpt.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Breakpt.java
index b5b88ad96..b5b88ad96 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Breakpt.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Breakpt.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfArcs.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfArcs.java
index 0646e1d9f..0646e1d9f 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfArcs.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfArcs.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfBreakpts.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfBreakpts.java
index e47fdf966..e47fdf966 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfBreakpts.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfBreakpts.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfFloats.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfFloats.java
index 60cef9919..60cef9919 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfFloats.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfFloats.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfQuiltspecs.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfQuiltspecs.java
index ef16a8204..ef16a8204 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfQuiltspecs.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CArrayOfQuiltspecs.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curve.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curve.java
index fb1a5acea..fb1a5acea 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curve.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curve.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CurveEvaluator.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CurveEvaluator.java
index c27ffd4c4..c27ffd4c4 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CurveEvaluator.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/CurveEvaluator.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curvelist.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curvelist.java
index fc3018833..fc3018833 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curvelist.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Curvelist.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/DisplayList.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/DisplayList.java
index 39a3a28f4..39a3a28f4 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/DisplayList.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/DisplayList.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Flist.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Flist.java
index 00757ed7e..00757ed7e 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Flist.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Flist.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotspec.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotspec.java
index 9251aa231..9251aa231 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotspec.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotspec.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotvector.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotvector.java
index 658a1cbda..658a1cbda 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotvector.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Knotvector.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Mapdesc.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Mapdesc.java
index 568eddc51..568eddc51 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Mapdesc.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Mapdesc.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Maplist.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Maplist.java
index b23a1f665..b23a1f665 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Maplist.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Maplist.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/NurbsConsts.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/NurbsConsts.java
index ee7f3b31b..ee7f3b31b 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/NurbsConsts.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/NurbsConsts.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_curve.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_curve.java
index 900f8e56f..900f8e56f 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_curve.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_curve.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbscurve.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbscurve.java
index 81110813f..81110813f 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbscurve.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbscurve.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbssurface.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbssurface.java
index b598f525d..b598f525d 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbssurface.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_nurbssurface.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_pwlcurve.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_pwlcurve.java
index e50f41d81..e50f41d81 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_pwlcurve.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_pwlcurve.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_surface.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_surface.java
index 76ac79f0a..76ac79f0a 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_surface.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_surface.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_trim.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_trim.java
index 17e5002df..17e5002df 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_trim.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/O_trim.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patch.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patch.java
index d3066cc84..d3066cc84 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patch.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patch.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patchlist.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patchlist.java
index 8b439a02f..8b439a02f 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patchlist.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Patchlist.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Property.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Property.java
index b486a0ead..b486a0ead 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Property.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Property.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Pspec.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Pspec.java
index 1e60ed335..1e60ed335 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Pspec.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Pspec.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/PwlArc.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/PwlArc.java
index 0c9eca91e..0c9eca91e 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/PwlArc.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/PwlArc.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quilt.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quilt.java
index 03e809d23..03e809d23 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quilt.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quilt.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quiltspec.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quiltspec.java
index 6c8e55e06..6c8e55e06 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quiltspec.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Quiltspec.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/README.txt b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/README.txt
index 89630c71e..89630c71e 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/README.txt
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/README.txt
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Renderhints.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Renderhints.java
index d1a23fbab..d1a23fbab 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Renderhints.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Renderhints.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Splinespec.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Splinespec.java
index 487b47f2d..487b47f2d 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Splinespec.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Splinespec.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Subdivider.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Subdivider.java
index 99c1b740b..99c1b740b 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Subdivider.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/Subdivider.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/SurfaceEvaluator.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/SurfaceEvaluator.java
index fe23f9c08..fe23f9c08 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/SurfaceEvaluator.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/SurfaceEvaluator.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/TrimVertex.java b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/TrimVertex.java
index 6608f8f40..6608f8f40 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/TrimVertex.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/glu/nurbs/TrimVertex.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLDrawableFactory.java b/src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLDrawableFactory.java
index e71a78ffb..9694e5607 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLDrawableFactory.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLDrawableFactory.java
@@ -78,8 +78,8 @@ public class MacOSXCGLDrawableFactory extends GLDrawableFactoryImpl {
new MacOSXCGLGraphicsConfigurationFactory();
try {
- ReflectionUtil.createInstance("com.jogamp.opengl.impl.macosx.cgl.awt.MacOSXAWTCGLGraphicsConfigurationFactory", getClass().getClassLoader(),
- new Object[] {});
+ ReflectionUtil.createInstance("com.jogamp.opengl.impl.macosx.cgl.awt.MacOSXAWTCGLGraphicsConfigurationFactory",
+ new Object[] {}, getClass().getClassLoader());
} catch (JogampRuntimeException jre) { /* n/a .. */ }
}
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 1f1fb0d40..1f1fb0d40 100755..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
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 41e469224..41e469224 100755..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
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 353ed8ac3..85444b61c 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
@@ -80,8 +80,8 @@ public class WindowsWGLDrawableFactory extends GLDrawableFactoryImpl {
// The act of constructing them causes them to be registered
new WindowsWGLGraphicsConfigurationFactory();
try {
- ReflectionUtil.createInstance("com.jogamp.opengl.impl.windows.wgl.awt.WindowsAWTWGLGraphicsConfigurationFactory", getClass().getClassLoader(),
- new Object[] {});
+ ReflectionUtil.createInstance("com.jogamp.opengl.impl.windows.wgl.awt.WindowsAWTWGLGraphicsConfigurationFactory",
+ new Object[] {}, getClass().getClassLoader());
} catch (JogampRuntimeException jre) { /* n/a .. */ }
try {
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXContext.java b/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXContext.java
index a1e4585f7..a1e4585f7 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXContext.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXDrawable.java b/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXDrawable.java
index 8a8702a3e..8a8702a3e 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXDrawable.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11ExternalGLXDrawable.java
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXDrawableFactory.java b/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXDrawableFactory.java
index c08c7c73f..98be19263 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXDrawableFactory.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXDrawableFactory.java
@@ -78,8 +78,8 @@ public class X11GLXDrawableFactory extends GLDrawableFactoryImpl {
// The act of constructing them causes them to be registered
new X11GLXGraphicsConfigurationFactory();
try {
- ReflectionUtil.createInstance("com.jogamp.opengl.impl.x11.glx.awt.X11AWTGLXGraphicsConfigurationFactory", getClass().getClassLoader(),
- new Object[] {});
+ ReflectionUtil.createInstance("com.jogamp.opengl.impl.x11.glx.awt.X11AWTGLXGraphicsConfigurationFactory",
+ new Object[] {}, getClass().getClassLoader());
} catch (JogampRuntimeException jre) { /* n/a .. */ }
// init shared resources ..
diff --git a/src/jogl/classes/com/jogamp/opengl/util/Animator.java b/src/jogl/classes/com/jogamp/opengl/util/Animator.java
index 15b9d5eb9..66d3d5b88 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/Animator.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/Animator.java
@@ -218,6 +218,9 @@ public class Animator {
} else {
thread = new Thread(threadGroup, runnable);
}
+ for(Iterator iter = drawables.iterator(); iter.hasNext(); ) {
+ ((GLAutoDrawable) iter.next()).setAnimator(thread);
+ }
thread.start();
}
@@ -241,15 +244,16 @@ public class Animator {
// dependencies on the Animator's internal thread. Currently we
// use a couple of heuristics to determine whether we should do
// the blocking wait().
- if (impl.skipWaitForStop(thread)) {
- return;
- }
-
- while (shouldStop && thread != null) {
- try {
- wait();
- } catch (InterruptedException ie) {
+ if (!impl.skipWaitForStop(thread)) {
+ while (shouldStop && thread != null) {
+ try {
+ wait();
+ } catch (InterruptedException ie) {
+ }
}
}
+ for(Iterator iter = drawables.iterator(); iter.hasNext(); ) {
+ ((GLAutoDrawable) iter.next()).setAnimator(null);
+ }
}
}
diff --git a/src/jogl/classes/com/jogamp/opengl/util/FBObject.java b/src/jogl/classes/com/jogamp/opengl/util/FBObject.java
index 4920ed5f5..4920ed5f5 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/FBObject.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/FBObject.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/FPSAnimator.java b/src/jogl/classes/com/jogamp/opengl/util/FPSAnimator.java
index 75c4cdff7..75c4cdff7 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/FPSAnimator.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/FPSAnimator.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/FileUtil.java b/src/jogl/classes/com/jogamp/opengl/util/FileUtil.java
index 6ad0da825..6ad0da825 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/FileUtil.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/FileUtil.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/GLBuffers.java b/src/jogl/classes/com/jogamp/opengl/util/GLBuffers.java
index efe3a7675..efe3a7675 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/GLBuffers.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/GLBuffers.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/Gamma.java b/src/jogl/classes/com/jogamp/opengl/util/Gamma.java
index 672325cf3..672325cf3 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/Gamma.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/Gamma.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/PMVMatrix.java b/src/jogl/classes/com/jogamp/opengl/util/PMVMatrix.java
index 47de8ce0a..47de8ce0a 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/PMVMatrix.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/PMVMatrix.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/StreamUtil.java b/src/jogl/classes/com/jogamp/opengl/util/StreamUtil.java
index 4cf8cb1f0..4cf8cb1f0 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/StreamUtil.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/StreamUtil.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/TGAWriter.java b/src/jogl/classes/com/jogamp/opengl/util/TGAWriter.java
index b949f0e39..b949f0e39 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/TGAWriter.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/TGAWriter.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/awt/ImageUtil.java b/src/jogl/classes/com/jogamp/opengl/util/awt/ImageUtil.java
index a3139b16a..a3139b16a 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/awt/ImageUtil.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/awt/ImageUtil.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/awt/Overlay.java b/src/jogl/classes/com/jogamp/opengl/util/awt/Overlay.java
index 1275c9391..1275c9391 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/awt/Overlay.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/awt/Overlay.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/awt/Screenshot.java b/src/jogl/classes/com/jogamp/opengl/util/awt/Screenshot.java
index 7019d720f..7019d720f 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/awt/Screenshot.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/awt/Screenshot.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java b/src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java
index bac9f88ea..bac9f88ea 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/awt/TextureRenderer.java b/src/jogl/classes/com/jogamp/opengl/util/awt/TextureRenderer.java
index bc5aa517e..bc5aa517e 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/awt/TextureRenderer.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/awt/TextureRenderer.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/gl2/TileRenderer.java b/src/jogl/classes/com/jogamp/opengl/util/gl2/TileRenderer.java
index 714c134d4..714c134d4 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/gl2/TileRenderer.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/gl2/TileRenderer.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/FixedFuncHook.java b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/FixedFuncHook.java
index b8e3922a4..b8e3922a4 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/FixedFuncHook.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/FixedFuncHook.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bfp b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bfp
index 3ebaaee1d..3ebaaee1d 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bfp
+++ b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bfp
Binary files differ
diff --git a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bvp b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bvp
index 279ef72c7..279ef72c7 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bvp
+++ b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bvp
Binary files differ
diff --git a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorLight.bvp b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorLight.bvp
index 5a9deea71..5a9deea71 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorLight.bvp
+++ b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorLight.bvp
Binary files differ
diff --git a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorTexture.bfp b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorTexture.bfp
index ce1397fe1..ce1397fe1 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorTexture.bfp
+++ b/src/jogl/classes/com/jogamp/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorTexture.bfp
Binary files differ
diff --git a/src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShader.java b/src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShader.java
index a0eed50ea..a0eed50ea 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShader.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShader.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShaderNVidia.java b/src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShaderNVidia.java
index 8eb9ef579..8eb9ef579 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShaderNVidia.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/glsl/sdk/CompileShaderNVidia.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/packrect/BackingStoreManager.java b/src/jogl/classes/com/jogamp/opengl/util/packrect/BackingStoreManager.java
index 7b6a1b479..7b6a1b479 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/packrect/BackingStoreManager.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/packrect/BackingStoreManager.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/packrect/Level.java b/src/jogl/classes/com/jogamp/opengl/util/packrect/Level.java
index 5ba3f7330..5ba3f7330 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/packrect/Level.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/packrect/Level.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/packrect/LevelSet.java b/src/jogl/classes/com/jogamp/opengl/util/packrect/LevelSet.java
index 6783aec3b..6783aec3b 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/packrect/LevelSet.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/packrect/LevelSet.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/packrect/Rect.java b/src/jogl/classes/com/jogamp/opengl/util/packrect/Rect.java
index 6206c4a11..6206c4a11 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/packrect/Rect.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/packrect/Rect.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/packrect/RectVisitor.java b/src/jogl/classes/com/jogamp/opengl/util/packrect/RectVisitor.java
index 49cfc82e6..49cfc82e6 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/packrect/RectVisitor.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/packrect/RectVisitor.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/packrect/RectanglePacker.java b/src/jogl/classes/com/jogamp/opengl/util/packrect/RectanglePacker.java
index 1496a04a6..1496a04a6 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/packrect/RectanglePacker.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/packrect/RectanglePacker.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/packrect/package.html b/src/jogl/classes/com/jogamp/opengl/util/packrect/package.html
index c1c5db477..c1c5db477 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/packrect/package.html
+++ b/src/jogl/classes/com/jogamp/opengl/util/packrect/package.html
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/Texture.java b/src/jogl/classes/com/jogamp/opengl/util/texture/Texture.java
index 57ac0d45a..57ac0d45a 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/Texture.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/Texture.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/TextureCoords.java b/src/jogl/classes/com/jogamp/opengl/util/texture/TextureCoords.java
index 8d8b3679d..8d8b3679d 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/TextureCoords.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/TextureCoords.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/TextureData.java b/src/jogl/classes/com/jogamp/opengl/util/texture/TextureData.java
index f598422bf..f598422bf 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/TextureData.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/TextureData.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javame_cdc_fp b/src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javame_cdc_fp
index 3b694be68..3b694be68 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javame_cdc_fp
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javame_cdc_fp
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javase b/src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javase
index 819a6acf5..819a6acf5 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javase
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/TextureIO.java.javase
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/awt/AWTTextureData.java b/src/jogl/classes/com/jogamp/opengl/util/texture/awt/AWTTextureData.java
index 39ec74b97..39ec74b97 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/awt/AWTTextureData.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/awt/AWTTextureData.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp
index b18991dfc..b18991dfc 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javase b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javase
index e3092162d..e3092162d 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javase
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/DDSImage.java.javase
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataInputStream.java b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataInputStream.java
index d5f49599c..d5f49599c 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataInputStream.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataInputStream.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataOutputStream.java b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataOutputStream.java
index e1e1ca924..e1e1ca924 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataOutputStream.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/LEDataOutputStream.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/SGIImage.java b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/SGIImage.java
index bb5040a31..bb5040a31 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/SGIImage.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/SGIImage.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp
index 6e6e4ab04..6e6e4ab04 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javase b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javase
index 16ba538b5..16ba538b5 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javase
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java.javase
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureProvider.java b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureProvider.java
index 88018edbe..88018edbe 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureProvider.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureProvider.java
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureWriter.java b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureWriter.java
index 55527cef5..55527cef5 100755..100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureWriter.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TextureWriter.java
diff --git a/src/jogl/classes/javax/media/opengl/GLAutoDrawable.java b/src/jogl/classes/javax/media/opengl/GLAutoDrawable.java
index 7236aa533..10a32fd1d 100644
--- a/src/jogl/classes/javax/media/opengl/GLAutoDrawable.java
+++ b/src/jogl/classes/javax/media/opengl/GLAutoDrawable.java
@@ -161,14 +161,49 @@ public interface GLAutoDrawable extends GLDrawable {
during this update cycle. */
public void removeGLEventListener(GLEventListener listener);
+ /**
+ * <p>
+ * Indicates whether a running animator thread is periodically issuing {@link #display()} calls or not.</p><br>
+ * <p>
+ * This method shall be called by an animator implementation only,<br>
+ * e.g. {@link com.jogamp.opengl.util.Animator#start()}, passing the animator thread,<br>
+ * and {@link com.jogamp.opengl.util.Animator#stop()}, passing <code>null</code>.</p><br>
+ * <p>
+ * Impacts {@link #display()} and {@link #invoke(boolean, GLRunnable)} semantics.</p><br>
+ *
+ * @param animator <code>null</code> reference indicates no running animator thread
+ * issues {@link #display()} calls on this <code>GLAutoDrawable</code>,<br>
+ * a valid reference indicates a running animator thread
+ * periodically issuing {@link #display()} calls.
+ *
+ * @throws GLException if a running animator thread is already registered and you try to register a different one without unregistering the previous one.
+ * @see #display()
+ * @see #invoke(boolean, GLRunnable)
+ */
+ public void setAnimator(Thread animator) throws GLException;
+
+ /**
+ * @return the value of the registered animator thread
+ *
+ * @see #setAnimator(Thread)
+ */
+ public Thread getAnimator();
+
/**
- * Enqueues the one-shot {@link javax.media.opengl.GLRunnable} into the queue,
- * which will be executed at the next {@link #display()} call.
* <p>
- * Warning: We cannot verify if the caller runs in the same thread
- * as the display caller, hence we cannot avoid a deadlock
- * in such case. You have to know what you are doing,
- * ie call this only in a I/O event listener, or such.<br></p>
+ * Enqueues a one-shot {@link javax.media.opengl.GLRunnable},
+ * which will be executed with the next {@link #display()} call.</p><br>
+ * <p>
+ * If {@link #setAnimator(Thread)} has not registered no running animator thread, the default,<br>
+ * or if the current thread is the animator thread,<br>
+ * a {@link #display()} call has to be issued after enqueueing the <code>GLRunnable</code>.<br>
+ * No extra synchronization must be performed in case <code>wait</code> is true, since it is executed in the current thread.</p><br>
+ * <p>
+ * If {@link #setAnimator(Thread)} has registered a valid animator thread,<br>
+ * no call of {@link #display()} must be issued, since the animator thread performs it.<br>
+ * If <code>wait</code> is true, the implementation must wait until the <code>GLRunnable</code> is excecuted.</p><br>
+ *
+ * @see #setAnimator(Thread)
* @see #display()
* @see javax.media.opengl.GLRunnable
*/
@@ -190,28 +225,37 @@ public interface GLAutoDrawable extends GLDrawable {
routine may be called manually. */
public void destroy();
- /** <p>Causes OpenGL rendering to be performed for this GLAutoDrawable
- in the following order:
- <ul>
- <li> Calling {@link GLEventListener#display display(..)} for all
- registered {@link GLEventListener}s. </li>
- <li> Execute and dismiss all one-shot {@link javax.media.opengl.GLRunnable},
- enqueued via {@link #invoke(boolean, GLRunnable)}.</li>
- </ul></p>
- <p>
- Called automatically by the
- window system toolkit upon receiving a repaint() request.</p>
- <p>
- This routine may be called manually for better control over the
- rendering process. It is legal to call another GLAutoDrawable's
- display method from within the {@link GLEventListener#display
- display(..)} callback.</p>
- <p>
- In case of a new generated OpenGL context,
- the implementation shall call {@link GLEventListener#init init(..)} for all
- registered {@link GLEventListener}s <i>before</i> making the
- actual {@link GLEventListener#display display(..)} calls,
- in case this has not been done yet.</p> */
+ /**
+ * <p>
+ * Causes OpenGL rendering to be performed for this GLAutoDrawable
+ * in the following order:
+ * <ul>
+ * <li> Calling {@link GLEventListener#display display(..)} for all
+ * registered {@link GLEventListener}s. </li>
+ * <li> Executes all one-shot {@link javax.media.opengl.GLRunnable},
+ * enqueued via {@link #invoke(boolean, GLRunnable)}.</li>
+ * </ul></p>
+ * <p>
+ * Called automatically by the
+ * window system toolkit upon receiving a repaint() request,
+ * except a running animator thread is registered with {@link #setAnimator(Thread)}.</p> <br>
+ * <p>
+ * Maybe called periodically by a running animator thread,<br>
+ * which must register itself with {@link #setAnimator(Thread)}.</p> <br>
+ * <p>
+ * This routine may be called manually for better control over the
+ * rendering process. It is legal to call another GLAutoDrawable's
+ * display method from within the {@link GLEventListener#display
+ * display(..)} callback.</p>
+ * <p>
+ * In case of a new generated OpenGL context,
+ * the implementation shall call {@link GLEventListener#init init(..)} for all
+ * registered {@link GLEventListener}s <i>before</i> making the
+ * actual {@link GLEventListener#display display(..)} calls,
+ * in case this has not been done yet.</p>
+ *
+ * @see #setAnimator(Thread)
+ */
public void display();
/** Enables or disables automatic buffer swapping for this drawable.
diff --git a/src/jogl/classes/javax/media/opengl/Threading.java b/src/jogl/classes/javax/media/opengl/Threading.java
index e58792b8f..e58792b8f 100755..100644
--- a/src/jogl/classes/javax/media/opengl/Threading.java
+++ b/src/jogl/classes/javax/media/opengl/Threading.java
diff --git a/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java b/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java
index 2dafd691a..f150b2507 100644
--- a/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java
+++ b/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java
@@ -378,7 +378,9 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable {
return;
}
- display();
+ if( null == getAnimator() ) {
+ display();
+ }
}
/** Overridden to track when this component is added to a container.
@@ -492,8 +494,16 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable {
drawableHelper.removeGLEventListener(listener);
}
+ public void setAnimator(Thread animator) {
+ drawableHelper.setAnimator(animator);
+ }
+
+ public Thread getAnimator() {
+ return drawableHelper.getAnimator();
+ }
+
public void invoke(boolean wait, GLRunnable glRunnable) {
- drawableHelper.invoke(wait, glRunnable);
+ drawableHelper.invoke(this, wait, glRunnable);
}
public void setContext(GLContext ctx) {
@@ -640,10 +650,7 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable {
if (sendReshape) {
// Note: we ignore the given x and y within the parent component
// since we are drawing directly into this heavyweight component.
- int width = getWidth();
- int height = getHeight();
- getGL().glViewport(0, 0, width, height);
- drawableHelper.reshape(GLCanvas.this, 0, 0, width, height);
+ drawableHelper.reshape(GLCanvas.this, 0, 0, getWidth(), getHeight());
sendReshape = false;
}
diff --git a/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java b/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java
index 73962e979..d0d97fe31 100644
--- a/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java
+++ b/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java
@@ -380,8 +380,16 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable {
drawableHelper.removeGLEventListener(listener);
}
+ public void setAnimator(Thread animator) {
+ drawableHelper.setAnimator(animator);
+ }
+
+ public Thread getAnimator() {
+ return drawableHelper.getAnimator();
+ }
+
public void invoke(boolean wait, GLRunnable glRunnable) {
- drawableHelper.invoke(wait, glRunnable);
+ drawableHelper.invoke(this, wait, glRunnable);
}
public GLContext createContext(GLContext shareWith) {
@@ -585,9 +593,8 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable {
}
if (sendReshape) {
if (DEBUG||VERBOSE) {
- System.err.println("display: glViewport(" + viewportX + "," + viewportY + " " + panelWidth + "x" + panelHeight + ")");
+ System.err.println("display: reshape(" + viewportX + "," + viewportY + " " + panelWidth + "x" + panelHeight + ")");
}
- getGL().getGL2().glViewport(viewportX, viewportY, panelWidth, panelHeight);
drawableHelper.reshape(GLJPanel.this, viewportX, viewportY, panelWidth, panelHeight);
sendReshape = false;
}
diff --git a/src/jogl/classes/javax/media/opengl/glu/GLUnurbs.java b/src/jogl/classes/javax/media/opengl/glu/GLUnurbs.java
index 2641115d0..2641115d0 100755..100644
--- a/src/jogl/classes/javax/media/opengl/glu/GLUnurbs.java
+++ b/src/jogl/classes/javax/media/opengl/glu/GLUnurbs.java
diff --git a/src/jogl/classes/javax/media/opengl/glu/GLUquadric.java b/src/jogl/classes/javax/media/opengl/glu/GLUquadric.java
index 49451a34b..49451a34b 100755..100644
--- a/src/jogl/classes/javax/media/opengl/glu/GLUquadric.java
+++ b/src/jogl/classes/javax/media/opengl/glu/GLUquadric.java
diff --git a/src/jogl/classes/javax/media/opengl/glu/GLUtessellator.java b/src/jogl/classes/javax/media/opengl/glu/GLUtessellator.java
index f98bbe158..f98bbe158 100755..100644
--- a/src/jogl/classes/javax/media/opengl/glu/GLUtessellator.java
+++ b/src/jogl/classes/javax/media/opengl/glu/GLUtessellator.java
diff --git a/src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallback.java b/src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallback.java
index 72ad68ceb..72ad68ceb 100755..100644
--- a/src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallback.java
+++ b/src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallback.java
diff --git a/src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallbackAdapter.java b/src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallbackAdapter.java
index f380f4698..f380f4698 100755..100644
--- a/src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallbackAdapter.java
+++ b/src/jogl/classes/javax/media/opengl/glu/GLUtessellatorCallbackAdapter.java
diff --git a/src/jogl/native/audio/Mixer.cpp b/src/jogl/native/audio/Mixer.cpp
index 9fa5b61bc..9fa5b61bc 100755..100644
--- a/src/jogl/native/audio/Mixer.cpp
+++ b/src/jogl/native/audio/Mixer.cpp
diff --git a/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java b/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java
index 16f42053b..16f42053b 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java
diff --git a/src/junit/com/jogamp/test/junit/jogl/awt/TestAWT01GLn.java b/src/junit/com/jogamp/test/junit/jogl/awt/TestAWT01GLn.java
index 1652acd82..f10218509 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/awt/TestAWT01GLn.java
+++ b/src/junit/com/jogamp/test/junit/jogl/awt/TestAWT01GLn.java
@@ -48,6 +48,10 @@ import org.junit.After;
import org.junit.Test;
public class TestAWT01GLn {
+ static {
+ GLProfile.initSingleton();
+ }
+
Frame frame=null;
GLCanvas glCanvas=null;
diff --git a/src/junit/com/jogamp/test/junit/jogl/awt/TestSwingAWT01GLn.java b/src/junit/com/jogamp/test/junit/jogl/awt/TestSwingAWT01GLn.java
index ed8a5dd0f..6144a6308 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/awt/TestSwingAWT01GLn.java
+++ b/src/junit/com/jogamp/test/junit/jogl/awt/TestSwingAWT01GLn.java
@@ -56,6 +56,10 @@ import static javax.swing.SwingUtilities.*;
* @author Michael Bien
*/
public class TestSwingAWT01GLn {
+ static {
+ GLProfile.initSingleton();
+ }
+
private Window[] windows;
diff --git a/src/junit/com/jogamp/test/junit/jogl/demos/es1/RedSquare.java b/src/junit/com/jogamp/test/junit/jogl/demos/es1/RedSquare.java
index 9b8982ed4..be416f01d 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/demos/es1/RedSquare.java
+++ b/src/junit/com/jogamp/test/junit/jogl/demos/es1/RedSquare.java
@@ -44,6 +44,7 @@ public class RedSquare implements GLEventListener {
private FloatBuffer vertices;
public void init(GLAutoDrawable drawable) {
+ System.out.println("RedSquare: Init");
GL _gl = drawable.getGL();
if(glDebugEmu) {
@@ -119,6 +120,7 @@ public class RedSquare implements GLEventListener {
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
+ System.out.println("RedSquare: Reshape");
GL2ES1 gl = drawable.getGL().getGL2ES1();
// Set location in front of camera
gl.glMatrixMode(gl.GL_PROJECTION);
@@ -147,6 +149,7 @@ public class RedSquare implements GLEventListener {
}
public void dispose(GLAutoDrawable drawable) {
+ System.out.println("RedSquare: Dispose");
GL2ES1 gl = drawable.getGL().getGL2ES1();
if(debug) {
System.out.println(Thread.currentThread()+" RedSquare.dispose: "+gl.getContext());
@@ -163,8 +166,4 @@ public class RedSquare implements GLEventListener {
System.out.println(Thread.currentThread()+" RedSquare.dispose: FIN");
}
}
-
- public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
- }
-
}
diff --git a/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/Gears.java b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/Gears.java
index 1fa49be8c..ef5cf134a 100644
--- a/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/Gears.java
+++ b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/Gears.java
@@ -25,6 +25,7 @@ public class Gears implements GLEventListener {
private boolean mouseRButtonDown = false;
public void init(GLAutoDrawable drawable) {
+ System.out.println("Gears: Init");
// Use debug pipeline
// drawable.setGL(new DebugGL(drawable.getGL()));
@@ -77,6 +78,7 @@ public class Gears implements GLEventListener {
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
+ System.out.println("Gears: Reshape");
GL2 gl = drawable.getGL().getGL2();
float h = (float)height / (float)width;
@@ -91,6 +93,7 @@ public class Gears implements GLEventListener {
}
public void dispose(GLAutoDrawable drawable) {
+ System.out.println("Gears: Dispose");
}
public void display(GLAutoDrawable drawable) {
@@ -144,8 +147,6 @@ public class Gears implements GLEventListener {
gl.glPopMatrix();
}
- public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
-
public static void gear(GL2 gl,
float inner_radius,
float outer_radius,
diff --git a/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsAWT.java b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsAWT.java
index 2df3f0de9..b191dbbaf 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsAWT.java
+++ b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsAWT.java
@@ -51,6 +51,10 @@ import org.junit.After;
import org.junit.Test;
public class TestGearsAWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static GLProfile glp;
static int width, height;
diff --git a/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNEWT.java b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNEWT.java
index e50ffbde9..bafa8a1fb 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNEWT.java
+++ b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNEWT.java
@@ -48,6 +48,10 @@ import org.junit.After;
import org.junit.Test;
public class TestGearsNEWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static GLProfile glp;
static int width, height;
diff --git a/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNewtAWTWrapper.java b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNewtAWTWrapper.java
index 51977d6d3..316c9edb4 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNewtAWTWrapper.java
+++ b/src/junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGearsNewtAWTWrapper.java
@@ -49,6 +49,10 @@ import org.junit.After;
import org.junit.Test;
public class TestGearsNewtAWTWrapper {
+ static {
+ GLProfile.initSingleton();
+ }
+
static GLProfile glp;
static int width, height;
diff --git a/src/junit/com/jogamp/test/junit/jogl/drawable/TestDrawable01NEWT.java b/src/junit/com/jogamp/test/junit/jogl/drawable/TestDrawable01NEWT.java
index cd0c7c0e0..8a9c960c1 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/drawable/TestDrawable01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/jogl/drawable/TestDrawable01NEWT.java
@@ -45,6 +45,10 @@ import com.jogamp.newt.*;
import java.io.IOException;
public class TestDrawable01NEWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static GLProfile glp;
static GLDrawableFactory factory;
static int width, height;
diff --git a/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2File.java b/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2File.java
index de7c8d43a..de7c8d43a 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2File.java
+++ b/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2File.java
diff --git a/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2Screen.java b/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2Screen.java
index 030a7e173..030a7e173 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2Screen.java
+++ b/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBuffer2Screen.java
diff --git a/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferBase.java b/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferBase.java
index 4841d33e9..4841d33e9 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferBase.java
+++ b/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferBase.java
diff --git a/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferUtil.java b/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferUtil.java
index ff3b9b58a..ff3b9b58a 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferUtil.java
+++ b/src/junit/com/jogamp/test/junit/jogl/offscreen/ReadBufferUtil.java
diff --git a/src/junit/com/jogamp/test/junit/jogl/offscreen/Surface2File.java b/src/junit/com/jogamp/test/junit/jogl/offscreen/Surface2File.java
index 2799d72c4..2799d72c4 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/offscreen/Surface2File.java
+++ b/src/junit/com/jogamp/test/junit/jogl/offscreen/Surface2File.java
diff --git a/src/junit/com/jogamp/test/junit/jogl/offscreen/TestOffscreen01NEWT.java b/src/junit/com/jogamp/test/junit/jogl/offscreen/TestOffscreen01NEWT.java
index bae727019..ad198fca8 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/offscreen/TestOffscreen01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/jogl/offscreen/TestOffscreen01NEWT.java
@@ -57,6 +57,10 @@ import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
import java.io.IOException;
public class TestOffscreen01NEWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static GLProfile glpDefault;
static GLDrawableFactory glDrawableFactory;
static int width, height;
diff --git a/src/junit/com/jogamp/test/junit/jogl/offscreen/WindowUtilNEWT.java b/src/junit/com/jogamp/test/junit/jogl/offscreen/WindowUtilNEWT.java
index 7242abf0b..7242abf0b 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/offscreen/WindowUtilNEWT.java
+++ b/src/junit/com/jogamp/test/junit/jogl/offscreen/WindowUtilNEWT.java
diff --git a/src/junit/com/jogamp/test/junit/jogl/texture/TestTexture01AWT.java b/src/junit/com/jogamp/test/junit/jogl/texture/TestTexture01AWT.java
index 7fdbd59c8..b34023bee 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/texture/TestTexture01AWT.java
+++ b/src/junit/com/jogamp/test/junit/jogl/texture/TestTexture01AWT.java
@@ -56,6 +56,10 @@ import org.junit.BeforeClass;
import org.junit.Test;
public class TestTexture01AWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static GLProfile glp;
static GLCapabilities caps;
BufferedImage textureImage;
diff --git a/src/junit/com/jogamp/test/junit/jogl/util/texture/gl2/TextureGL2ListenerDraw1.java b/src/junit/com/jogamp/test/junit/jogl/util/texture/gl2/TextureGL2ListenerDraw1.java
index c5e656572..c5e656572 100755..100644
--- a/src/junit/com/jogamp/test/junit/jogl/util/texture/gl2/TextureGL2ListenerDraw1.java
+++ b/src/junit/com/jogamp/test/junit/jogl/util/texture/gl2/TextureGL2ListenerDraw1.java
diff --git a/src/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java b/src/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java
index 4fd7744db..3a36a1132 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestGLWindows01NEWT.java
@@ -47,8 +47,8 @@ import org.junit.Test;
import javax.media.nativewindow.*;
import javax.media.opengl.*;
-import com.jogamp.opengl.util.Animator;
import com.jogamp.newt.*;
+import com.jogamp.newt.event.*;
import com.jogamp.newt.opengl.*;
import java.io.IOException;
@@ -56,9 +56,13 @@ import com.jogamp.test.junit.util.MiscUtils;
import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestGLWindows01NEWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static GLProfile glp;
static int width, height;
- static long duration = 100; // ms
+ static long durationPerTest = 100; // ms
@BeforeClass
public static void initClass() {
@@ -67,7 +71,11 @@ public class TestGLWindows01NEWT {
glp = GLProfile.getDefault();
}
- static GLWindow createWindow(Screen screen, GLCapabilities caps, int width, int height, boolean onscreen, boolean undecorated) {
+ static GLWindow createWindow(Screen screen, GLCapabilities caps,
+ int width, int height, boolean onscreen, boolean undecorated,
+ boolean addGLEventListenerAfterVisible)
+ throws InterruptedException
+ {
Assert.assertNotNull(caps);
caps.setOnscreen(onscreen);
// System.out.println("Requested: "+caps);
@@ -84,12 +92,23 @@ public class TestGLWindows01NEWT {
glWindow = GLWindow.create(caps, onscreen && undecorated);
}
Assert.assertNotNull(glWindow);
+ Assert.assertEquals(false,glWindow.isVisible());
Assert.assertEquals(false,glWindow.isNativeWindowValid());
+
+ GLEventListener demo = new Gears();
+ setDemoFields(demo, glWindow);
+ if(!addGLEventListenerAfterVisible) {
+ glWindow.addGLEventListener(demo);
+ }
+ glWindow.addWindowListener(new TraceWindowAdapter());
+
glWindow.setSize(width, height);
- Assert.assertEquals(false,glWindow.isVisible());
+
glWindow.setVisible(true);
Assert.assertEquals(true,glWindow.isVisible());
Assert.assertEquals(true,glWindow.isNativeWindowValid());
+ while(glWindow.getTotalFrames()<1) { Thread.sleep(100); }
+ Assert.assertEquals(1,glWindow.getTotalFrames()); // native expose ..
// Assert.assertEquals(width,glWindow.getWidth());
// Assert.assertEquals(height,glWindow.getHeight());
// System.out.println("Created: "+glWindow);
@@ -105,9 +124,10 @@ public class TestGLWindows01NEWT {
Assert.assertTrue(caps.getRedBits()>5);
Assert.assertEquals(caps.isOnscreen(),onscreen);
- GLEventListener demo = new Gears();
- setDemoFields(demo, glWindow);
- glWindow.addGLEventListener(demo);
+ if(addGLEventListenerAfterVisible) {
+ glWindow.addGLEventListener(demo);
+ glWindow.display();
+ }
return glWindow;
}
@@ -115,17 +135,21 @@ public class TestGLWindows01NEWT {
static void destroyWindow(GLWindow glWindow, boolean deep) {
if(null!=glWindow) {
glWindow.destroy(deep);
+ Assert.assertEquals(false,glWindow.isNativeWindowValid());
}
}
@Test
- public void testWindowNativeRecreate01Simple() throws InterruptedException {
+ public void testWindowNativeRecreate01aSimple() throws InterruptedException {
GLCapabilities caps = new GLCapabilities(glp);
Assert.assertNotNull(caps);
- GLWindow window = createWindow(null, caps, width, height, true /* onscreen */, false /* undecorated */);
+ GLWindow window = createWindow(null, caps, width, height,
+ true /* onscreen */, false /* undecorated */,
+ false /*addGLEventListenerAfterVisible*/);
- window.display();
- window.destroy();
+ Assert.assertEquals(true,window.isNativeWindowValid());
+ Assert.assertEquals(true,window.isVisible());
+ window.destroy(false);
Assert.assertEquals(false,window.isNativeWindowValid());
Assert.assertEquals(false,window.isVisible());
@@ -136,28 +160,70 @@ public class TestGLWindows01NEWT {
window.setVisible(true);
Assert.assertEquals(true,window.isNativeWindowValid());
Assert.assertEquals(true,window.isVisible());
+
+ window.setVisible(false);
+ Assert.assertEquals(true,window.isNativeWindowValid());
+ Assert.assertEquals(false,window.isVisible());
+
+ destroyWindow(window, true);
+ }
+
+ @Test
+ public void testWindowNativeRecreate01bSimple() throws InterruptedException {
+ GLCapabilities caps = new GLCapabilities(glp);
+ Assert.assertNotNull(caps);
+ GLWindow window = createWindow(null, caps, width, height,
+ true /* onscreen */, false /* undecorated */,
+ true /*addGLEventListenerAfterVisible*/);
+
+ Assert.assertEquals(true,window.isNativeWindowValid());
+ Assert.assertEquals(true,window.isVisible());
+ window.destroy(false);
+ Assert.assertEquals(false,window.isNativeWindowValid());
+ Assert.assertEquals(false,window.isVisible());
+
window.display();
+ Assert.assertEquals(false,window.isNativeWindowValid());
+ Assert.assertEquals(false,window.isVisible());
+
+ window.setVisible(true);
+ Assert.assertEquals(true,window.isNativeWindowValid());
+ Assert.assertEquals(true,window.isVisible());
- Animator animator = new Animator(window);
- animator.start();
- while(animator.isAnimating() && animator.getDuration()<duration) {
+ window.setVisible(false);
+ Assert.assertEquals(true,window.isNativeWindowValid());
+ Assert.assertEquals(false,window.isVisible());
+
+ destroyWindow(window, true);
+ }
+
+ @Test
+ public void testWindowDecor01aSimple() throws InterruptedException {
+ GLCapabilities caps = new GLCapabilities(glp);
+ Assert.assertNotNull(caps);
+ GLWindow window = createWindow(null, caps, width, height,
+ true /* onscreen */, false /* undecorated */,
+ false /*addGLEventListenerAfterVisible*/);
+ System.out.println("Created: "+window);
+ while(window.getDuration()<durationPerTest) {
Thread.sleep(100);
}
- animator.stop();
+ System.out.println("duration: "+window.getDuration());
destroyWindow(window, true);
}
@Test
- public void testWindowDecor01Simple() throws InterruptedException {
+ public void testWindowDecor01bSimple() throws InterruptedException {
GLCapabilities caps = new GLCapabilities(glp);
Assert.assertNotNull(caps);
- GLWindow window = createWindow(null, caps, width, height, true /* onscreen */, false /* undecorated */);
- Animator animator = new Animator(window);
- animator.start();
- while(animator.isAnimating() && animator.getDuration()<duration) {
+ GLWindow window = createWindow(null, caps, width, height,
+ true /* onscreen */, false /* undecorated */,
+ true /*addGLEventListenerAfterVisible*/);
+ System.out.println("Created: "+window);
+ while(window.getDuration()<durationPerTest) {
Thread.sleep(100);
}
- animator.stop();
+ System.out.println("duration: "+window.getDuration());
destroyWindow(window, true);
}
@@ -165,13 +231,13 @@ public class TestGLWindows01NEWT {
public void testWindowDecor02DestroyWinTwiceA() throws InterruptedException {
GLCapabilities caps = new GLCapabilities(glp);
Assert.assertNotNull(caps);
- GLWindow window = createWindow(null, caps, width, height, true /* onscreen */, false /* undecorated */);
- Animator animator = new Animator(window);
- animator.start();
- while(animator.isAnimating() && animator.getDuration()<duration) {
+ GLWindow window = createWindow(null, caps, width, height,
+ true /* onscreen */, false /* undecorated */,
+ false /*addGLEventListenerAfterVisible*/);
+ while(window.getDuration()<durationPerTest) {
Thread.sleep(100);
}
- animator.stop();
+ System.out.println("duration: "+window.getDuration());
destroyWindow(window, false);
destroyWindow(window, true);
}
@@ -189,28 +255,26 @@ public class TestGLWindows01NEWT {
Screen screen1 = NewtFactory.createScreen(display1, 0); // screen 0
Assert.assertNotNull(screen1);
- GLWindow window1 = createWindow(screen1, caps, width, height, true /* onscreen */, false /* undecorated */);
+ GLWindow window1 = createWindow(screen1, caps, width, height,
+ true /* onscreen */, false /* undecorated */,
+ false /*addGLEventListenerAfterVisible*/);
Assert.assertNotNull(window1);
Screen screen2 = NewtFactory.createScreen(display2, 0); // screen 0
Assert.assertNotNull(screen2);
- GLWindow window2 = createWindow(screen2, caps, width, height, true /* onscreen */, false /* undecorated */);
+ GLWindow window2 = createWindow(screen2, caps, width, height,
+ true /* onscreen */, false /* undecorated */,
+ false /*addGLEventListenerAfterVisible*/);
Assert.assertNotNull(window2);
- Animator animator1 = new Animator(window1);
- animator1.start();
- Animator animator2 = new Animator(window2);
- animator2.start();
- while(animator1.isAnimating() && animator1.getDuration()<duration) {
+ while(window1.getDuration()<durationPerTest) {
Thread.sleep(100);
}
+ System.out.println("duration1: "+window1.getDuration());
+ System.out.println("duration2: "+window2.getDuration());
- animator2.stop();
- Assert.assertEquals(false, animator2.isAnimating());
destroyWindow(window2, true);
- animator1.stop();
- Assert.assertEquals(false, animator1.isAnimating());
destroyWindow(window1, true);
}
@@ -222,7 +286,21 @@ public class TestGLWindows01NEWT {
}
}
+ static int atoi(String a) {
+ int i=0;
+ try {
+ i = Integer.parseInt(a);
+ } catch (Exception ex) { ex.printStackTrace(); }
+ return i;
+ }
+
public static void main(String args[]) throws IOException {
+ for(int i=0; i<args.length; i++) {
+ if(args[i].equals("-time")) {
+ durationPerTest = atoi(args[++i]);
+ }
+ }
+ System.out.println("durationPerTest: "+durationPerTest);
String tstname = TestGLWindows01NEWT.class.getName();
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(new String[] {
tstname,
diff --git a/src/junit/com/jogamp/test/junit/newt/TestGLWindows02NEWTAnimated.java b/src/junit/com/jogamp/test/junit/newt/TestGLWindows02NEWTAnimated.java
new file mode 100644
index 000000000..0677bc82c
--- /dev/null
+++ b/src/junit/com/jogamp/test/junit/newt/TestGLWindows02NEWTAnimated.java
@@ -0,0 +1,230 @@
+/*
+ * Copyright (c) 2010 Sven Gothel. 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 Sven Gothel 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
+ * SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+package com.jogamp.test.junit.newt;
+
+import java.lang.reflect.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Test;
+
+import javax.media.nativewindow.*;
+import javax.media.opengl.*;
+
+import com.jogamp.opengl.util.Animator;
+import com.jogamp.newt.*;
+import com.jogamp.newt.event.*;
+import com.jogamp.newt.opengl.*;
+import java.io.IOException;
+
+import com.jogamp.test.junit.util.MiscUtils;
+import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
+
+public class TestGLWindows02NEWTAnimated {
+ static {
+ GLProfile.initSingleton();
+ }
+
+ static GLProfile glp;
+ static int width, height;
+ static long durationPerTest = 100; // ms
+
+ @BeforeClass
+ public static void initClass() {
+ width = 640;
+ height = 480;
+ glp = GLProfile.getDefault();
+ }
+
+ static GLWindow createWindow(Screen screen, GLCapabilities caps, int width, int height, boolean onscreen, boolean undecorated) {
+ Assert.assertNotNull(caps);
+ caps.setOnscreen(onscreen);
+ // System.out.println("Requested: "+caps);
+
+ //
+ // Create native windowing resources .. X11/Win/OSX
+ //
+ GLWindow glWindow;
+ if(null!=screen) {
+ Window window = NewtFactory.createWindow(screen, caps, onscreen && undecorated);
+ Assert.assertNotNull(window);
+ glWindow = GLWindow.create(window);
+ } else {
+ glWindow = GLWindow.create(caps, onscreen && undecorated);
+ }
+ Assert.assertNotNull(glWindow);
+ GLEventListener demo = new Gears();
+ setDemoFields(demo, glWindow);
+ glWindow.addGLEventListener(demo);
+ glWindow.addWindowListener(new TraceWindowAdapter());
+ Assert.assertEquals(false,glWindow.isNativeWindowValid());
+
+ glWindow.setSize(width, height);
+ Assert.assertEquals(false,glWindow.isVisible());
+ glWindow.setVisible(true);
+ Assert.assertEquals(true,glWindow.isVisible());
+ Assert.assertEquals(true,glWindow.isNativeWindowValid());
+ // Assert.assertEquals(width,glWindow.getWidth());
+ // Assert.assertEquals(height,glWindow.getHeight());
+ // System.out.println("Created: "+glWindow);
+
+ //
+ // Create native OpenGL resources .. XGL/WGL/CGL ..
+ // equivalent to GLAutoDrawable methods: setVisible(true)
+ //
+ caps = (GLCapabilities) glWindow.getGraphicsConfiguration().getNativeGraphicsConfiguration().getChosenCapabilities();
+ Assert.assertNotNull(caps);
+ Assert.assertTrue(caps.getGreenBits()>5);
+ Assert.assertTrue(caps.getBlueBits()>5);
+ Assert.assertTrue(caps.getRedBits()>5);
+ Assert.assertEquals(caps.isOnscreen(),onscreen);
+
+ return glWindow;
+ }
+
+ static void destroyWindow(GLWindow glWindow, boolean deep) {
+ if(null!=glWindow) {
+ glWindow.destroy(deep);
+ }
+ }
+
+ @Test
+ public void testWindowDecor01Simple() throws InterruptedException {
+ GLCapabilities caps = new GLCapabilities(glp);
+ Assert.assertNotNull(caps);
+ GLWindow window = createWindow(null, caps, width, height, true /* onscreen */, false /* undecorated */);
+ Animator animator = new Animator(window);
+ animator.start();
+ while(animator.isAnimating() && animator.getDuration()<durationPerTest) {
+ Thread.sleep(100);
+ }
+ animator.stop();
+ destroyWindow(window, true);
+ }
+
+ @Test
+ public void testWindowDecor02DestroyWinTwiceA() throws InterruptedException {
+ GLCapabilities caps = new GLCapabilities(glp);
+ Assert.assertNotNull(caps);
+ GLWindow window = createWindow(null, caps, width, height, true /* onscreen */, false /* undecorated */);
+ Animator animator = new Animator(window);
+ animator.start();
+ while(animator.isAnimating() && animator.getDuration()<durationPerTest) {
+ Thread.sleep(100);
+ }
+ animator.stop();
+ destroyWindow(window, false);
+ destroyWindow(window, true);
+ }
+
+ @Test
+ public void testWindowDecor03TwoWin() throws InterruptedException {
+ GLCapabilities caps = new GLCapabilities(glp);
+ Assert.assertNotNull(caps);
+
+ Display display1 = NewtFactory.createDisplay(null); // local display
+ Assert.assertNotNull(display1);
+ Display display2 = NewtFactory.createDisplay(null); // local display
+ Assert.assertNotNull(display2);
+ Assert.assertEquals(display1, display2); // must be equal: same thread - same display
+
+ Screen screen1 = NewtFactory.createScreen(display1, 0); // screen 0
+ Assert.assertNotNull(screen1);
+ GLWindow window1 = createWindow(screen1, caps, width, height, true /* onscreen */, false /* undecorated */);
+ Assert.assertNotNull(window1);
+
+ Screen screen2 = NewtFactory.createScreen(display2, 0); // screen 0
+ Assert.assertNotNull(screen2);
+ GLWindow window2 = createWindow(screen2, caps, width-10, height-10, true /* onscreen */, false /* undecorated */);
+ Assert.assertNotNull(window2);
+
+ Animator animator1 = new Animator(window1);
+ animator1.start();
+ Animator animator2 = new Animator(window2);
+ animator2.start();
+ while(animator1.isAnimating() && animator1.getDuration()<durationPerTest) {
+ Thread.sleep(100);
+ }
+
+ animator2.stop();
+ Assert.assertEquals(false, animator2.isAnimating());
+ destroyWindow(window2, false);
+
+ animator1.stop();
+ Assert.assertEquals(false, animator1.isAnimating());
+ destroyWindow(window1, true);
+ }
+
+ public static void setDemoFields(GLEventListener demo, GLWindow glWindow) {
+ Assert.assertNotNull(demo);
+ Assert.assertNotNull(glWindow);
+ if(!MiscUtils.setFieldIfExists(demo, "window", glWindow.getInnerWindow())) {
+ MiscUtils.setFieldIfExists(demo, "glWindow", glWindow);
+ }
+ }
+
+ static int atoi(String a) {
+ int i=0;
+ try {
+ i = Integer.parseInt(a);
+ } catch (Exception ex) { ex.printStackTrace(); }
+ return i;
+ }
+
+ public static void main(String args[]) throws IOException {
+ for(int i=0; i<args.length; i++) {
+ if(args[i].equals("-time")) {
+ durationPerTest = atoi(args[++i]);
+ }
+ }
+ String tstname = TestGLWindows02NEWTAnimated.class.getName();
+ org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(new String[] {
+ tstname,
+ "filtertrace=true",
+ "haltOnError=false",
+ "haltOnFailure=false",
+ "showoutput=true",
+ "outputtoformatters=true",
+ "logfailedtests=true",
+ "logtestlistenerevents=true",
+ "formatter=org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter",
+ "formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,TEST-"+tstname+".xml" } );
+ }
+
+}
diff --git a/src/junit/com/jogamp/test/junit/newt/TestListenerCom01AWT.java b/src/junit/com/jogamp/test/junit/newt/TestListenerCom01AWT.java
index 495b8bb3e..5a67bbc15 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestListenerCom01AWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestListenerCom01AWT.java
@@ -65,9 +65,12 @@ import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestListenerCom01AWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static int width, height;
static long durationPerTest = 500;
- static long waitReparent = 300;
static boolean verbose = false;
@BeforeClass
@@ -152,8 +155,6 @@ public class TestListenerCom01AWT {
for(int i=0; i<args.length; i++) {
if(args[i].equals("-time")) {
durationPerTest = atoi(args[++i]);
- } else if(args[i].equals("-wait")) {
- waitReparent = atoi(args[++i]);
}
}
String tstname = TestListenerCom01AWT.class.getName();
diff --git a/src/junit/com/jogamp/test/junit/newt/TestWindows01NEWT.java b/src/junit/com/jogamp/test/junit/newt/TestWindows01NEWT.java
index 58ea235df..89d9c1ca2 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestWindows01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestWindows01NEWT.java
@@ -120,6 +120,7 @@ public class TestWindows01NEWT {
window.setVisible(true);
Assert.assertEquals(true,window.isNativeWindowValid());
+ Assert.assertEquals(true,window.isVisible());
Thread.sleep(100); // 100 ms
destroyWindow(display, screen, window);
diff --git a/src/junit/com/jogamp/test/junit/newt/GLRunnableDummy.java b/src/junit/com/jogamp/test/junit/newt/parenting/GLRunnableDummy.java
index 990a0c37d..1940616ad 100644
--- a/src/junit/com/jogamp/test/junit/newt/GLRunnableDummy.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/GLRunnableDummy.java
@@ -30,7 +30,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import org.junit.Assert;
import org.junit.Before;
@@ -47,7 +47,6 @@ public class GLRunnableDummy implements GLRunnable {
float d=0.001f;
public void run(GLAutoDrawable drawable) {
- // nop ..
GL2ES1 gl = drawable.getGL().getGL2ES1();
gl.glClearColor(r, g, b, 1f);
r+=d;
diff --git a/src/junit/com/jogamp/test/junit/newt/KeyAction.java b/src/junit/com/jogamp/test/junit/newt/parenting/KeyAction.java
index 3ca12a840..c9e1db074 100644
--- a/src/junit/com/jogamp/test/junit/newt/KeyAction.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/KeyAction.java
@@ -31,7 +31,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import com.jogamp.newt.event.*;
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParenting01NEWT.java b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01NEWT.java
index b1d57e793..421f74aa4 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestParenting01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01NEWT.java
@@ -30,7 +30,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import java.lang.reflect.*;
import java.util.ArrayList;
@@ -60,6 +60,10 @@ import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestParenting01NEWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static int width, height;
static long durationPerTest = 500;
static long waitReparent = 0;
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParenting01aAWT.java b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01aAWT.java
index d88e7157a..28b95884d 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestParenting01aAWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01aAWT.java
@@ -30,7 +30,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import java.lang.reflect.*;
import java.util.ArrayList;
@@ -47,6 +47,7 @@ import org.junit.Test;
import java.awt.Button;
import java.awt.BorderLayout;
import java.awt.Canvas;
+import java.awt.Container;
import java.awt.Frame;
import java.awt.Dimension;
@@ -66,6 +67,10 @@ import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestParenting01aAWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static int width, height;
static long durationPerTest = 800;
static long waitReparent = 0;
@@ -101,13 +106,26 @@ public class TestParenting01aAWT {
Assert.assertEquals(false, glWindow1.isNativeWindowValid());
Assert.assertNull(glWindow1.getParentNativeWindow());
- Frame frame = new Frame("AWT Parent Frame");
- Assert.assertNotNull(frame);
- frame.add(newtCanvasAWT);
- frame.setSize(width, height);
+ Frame frame1 = new Frame("AWT Parent Frame");
+ frame1.setLayout(new BorderLayout());
+ frame1.add(new Button("North"), BorderLayout.NORTH);
+ frame1.add(new Button("South"), BorderLayout.SOUTH);
+ frame1.add(new Button("East"), BorderLayout.EAST);
+ frame1.add(new Button("West"), BorderLayout.WEST);
+
+ Container container1 = new Container();
+ container1.setLayout(new BorderLayout());
+ container1.add(new Button("north"), BorderLayout.NORTH);
+ container1.add(new Button("south"), BorderLayout.SOUTH);
+ container1.add(new Button("east"), BorderLayout.EAST);
+ container1.add(new Button("west"), BorderLayout.WEST);
+ container1.add(newtCanvasAWT, BorderLayout.CENTER);
+
+ frame1.add(container1, BorderLayout.CENTER);
+ frame1.setSize(width, height);
// visible test
- frame.setVisible(true);
+ frame1.setVisible(true);
Assert.assertEquals(newtCanvasAWT.getNativeWindow(),glWindow1.getParentNativeWindow());
Animator animator1 = new Animator(glWindow1);
@@ -118,17 +136,17 @@ public class TestParenting01aAWT {
animator1.stop();
Assert.assertEquals(false, animator1.isAnimating());
- frame.setVisible(false);
+ frame1.setVisible(false);
Assert.assertEquals(false, glWindow1.isDestroyed());
- frame.setVisible(true);
+ frame1.setVisible(true);
Assert.assertEquals(false, glWindow1.isDestroyed());
- frame.remove(newtCanvasAWT);
+ frame1.remove(newtCanvasAWT);
// Assert.assertNull(glWindow1.getParentNativeWindow());
Assert.assertEquals(false, glWindow1.isDestroyed());
- frame.dispose();
+ frame1.dispose();
Assert.assertEquals(false, glWindow1.isDestroyed());
glWindow1.destroy(true);
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParenting01bAWT.java b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01bAWT.java
index 227744296..f95ad1c14 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestParenting01bAWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01bAWT.java
@@ -30,7 +30,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import java.lang.reflect.*;
import java.util.ArrayList;
@@ -66,6 +66,10 @@ import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestParenting01bAWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static int width, height;
static long durationPerTest = 800;
static long waitReparent = 0;
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParenting01cAWT.java b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01cAWT.java
index 7559390fa..0233a6aad 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestParenting01cAWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01cAWT.java
@@ -30,7 +30,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import java.lang.reflect.*;
import java.util.ArrayList;
@@ -67,6 +67,10 @@ import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestParenting01cAWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static int width, height;
static long durationPerTest = 800;
static long waitReparent = 0;
@@ -124,13 +128,9 @@ public class TestParenting01cAWT {
frame1.setVisible(true);
Assert.assertEquals(newtCanvasAWT.getNativeWindow(),glWindow1.getParentNativeWindow());
- Animator animator1 = new Animator(glWindow1);
- animator1.start();
- while(animator1.isAnimating() && animator1.getDuration()<durationPerTest) {
+ while(glWindow1.getDuration()<durationPerTest) {
Thread.sleep(100);
}
- animator1.stop();
- Assert.assertEquals(false, animator1.isAnimating());
frame1.setVisible(false);
Assert.assertEquals(false, glWindow1.isDestroyed());
@@ -149,6 +149,64 @@ public class TestParenting01cAWT {
//Assert.assertEquals(true, glWindow1.isDestroyed());
}
+ @Test
+ public void testWindowParenting05ReparentAWTWinHopFrame2Frame() throws InterruptedException {
+ int x = 0;
+ int y = 0;
+
+ NEWTEventFiFo eventFifo = new NEWTEventFiFo();
+
+ GLWindow glWindow1 = GLWindow.create(glCaps, true);
+ GLEventListener demo1 = new RedSquare();
+ setDemoFields(demo1, glWindow1, false);
+ glWindow1.addGLEventListener(demo1);
+
+ NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
+
+ Frame frame1 = new Frame("AWT Parent Frame");
+ frame1.setLayout(new BorderLayout());
+ frame1.add(new Button("North"), BorderLayout.NORTH);
+ frame1.add(new Button("South"), BorderLayout.SOUTH);
+ frame1.add(new Button("East"), BorderLayout.EAST);
+ frame1.add(new Button("West"), BorderLayout.WEST);
+ frame1.setSize(width, height);
+ frame1.setLocation(0, 0);
+ frame1.setVisible(true);
+
+ Frame frame2 = new Frame("AWT Parent Frame");
+ frame2.setLayout(new BorderLayout());
+ frame2.add(new Button("North"), BorderLayout.NORTH);
+ frame2.add(new Button("South"), BorderLayout.SOUTH);
+ frame2.add(new Button("East"), BorderLayout.EAST);
+ frame2.add(new Button("West"), BorderLayout.WEST);
+ frame2.setSize(width, height);
+ frame2.setLocation(640, 480);
+ frame2.setVisible(true);
+
+ frame1.add(newtCanvasAWT, BorderLayout.CENTER);
+ Assert.assertEquals(newtCanvasAWT.getNativeWindow(),glWindow1.getParentNativeWindow());
+
+ int state = 0;
+ while(glWindow1.getDuration()<3*durationPerTest) {
+ Thread.sleep(durationPerTest);
+ switch(state) {
+ case 0:
+ frame1.remove(newtCanvasAWT);
+ frame2.add(newtCanvasAWT, BorderLayout.CENTER);
+ break;
+ case 1:
+ frame2.remove(newtCanvasAWT);
+ frame1.add(newtCanvasAWT, BorderLayout.CENTER);
+ break;
+ }
+ state++;
+ }
+
+ frame1.dispose();
+ frame2.dispose();
+ glWindow1.destroy(true);
+ }
+
public static void setDemoFields(GLEventListener demo, GLWindow glWindow, boolean debug) {
Assert.assertNotNull(demo);
Assert.assertNotNull(glWindow);
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParenting01cSwingAWT.java b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01cSwingAWT.java
index a3a06aea3..07e60ed1c 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestParenting01cSwingAWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting01cSwingAWT.java
@@ -30,7 +30,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import java.lang.reflect.*;
import java.util.ArrayList;
@@ -70,6 +70,10 @@ import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestParenting01cSwingAWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static int width, height;
static long durationPerTest = 800;
static long waitReparent = 0;
@@ -147,6 +151,7 @@ public class TestParenting01cSwingAWT {
jFrame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // equivalent to Frame, use windowClosing event!
jFrame1.setContentPane(jPanel1);
jFrame1.setSize(width, height);
+ System.out.println("Demos: 1 - Visible");
jFrame1.setVisible(true); // from here on, we need to run modifications on EDT
final JFrame _jFrame1 = jFrame1;
@@ -159,23 +164,27 @@ public class TestParenting01cSwingAWT {
while(animator1.isAnimating() && animator1.getDuration()<durationPerTest) {
Thread.sleep(100);
}
+ System.out.println("Demos: 2 - StopAnimator");
animator1.stop();
Assert.assertEquals(false, animator1.isAnimating());
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
+ System.out.println("Demos: 3 - !Visible");
_jFrame1.setVisible(false);
} });
Assert.assertEquals(false, glWindow1.isDestroyed());
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
+ System.out.println("Demos: 4 - Visible");
_jFrame1.setVisible(true);
} });
Assert.assertEquals(false, glWindow1.isDestroyed());
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
+ System.out.println("Demos: 5 - X Container");
_jPanel1.remove(_container1);
} });
// Assert.assertNull(glWindow1.getParentNativeWindow());
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParenting02AWT.java b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting02AWT.java
index 8d9a0f380..08a3dc425 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestParenting02AWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting02AWT.java
@@ -30,7 +30,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import java.lang.reflect.*;
import java.util.ArrayList;
@@ -65,6 +65,10 @@ import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestParenting02AWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static int width, height;
static long durationPerTest = 500;
static long waitReparent = 300;
diff --git a/src/junit/com/jogamp/test/junit/newt/TestParenting02NEWT.java b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting02NEWT.java
index 5be04fcc2..0f25d2275 100755..100644
--- a/src/junit/com/jogamp/test/junit/newt/TestParenting02NEWT.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/TestParenting02NEWT.java
@@ -30,7 +30,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import java.lang.reflect.*;
import java.util.ArrayList;
@@ -59,6 +59,10 @@ import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestParenting02NEWT {
+ static {
+ GLProfile.initSingleton();
+ }
+
static int width, height;
static long durationPerTest = 500;
@@ -122,6 +126,11 @@ public class TestParenting02NEWT {
glWindow1.setPosition(x,y);
glWindow1.addKeyListener(new TraceKeyAdapter(new KeyAction(eventFifo)));
glWindow1.addWindowListener(new TraceWindowAdapter());
+
+ GLEventListener demo1 = new RedSquare();
+ setDemoFields(demo1, window1, glWindow1, false);
+ // glWindow1.addGLEventListener(demo1);
+
glWindow1.setVisible(true);
Capabilities capsChosen = glWindow1.getGraphicsConfiguration().getNativeGraphicsConfiguration().getChosenCapabilities();
Assert.assertNotNull(capsChosen);
@@ -139,17 +148,17 @@ public class TestParenting02NEWT {
glWindow2.addKeyListener(new TraceKeyAdapter(new KeyAction(eventFifo)));
glWindow2.addWindowListener(new TraceWindowAdapter(new WindowAction(eventFifo)));
// glWindow2.addMouseListener(new TraceMouseAdapter());
+
+ GLEventListener demo2 = new Gears();
+ setDemoFields(demo2, window2, glWindow2, false);
+ // glWindow2.addGLEventListener(demo2);
+
glWindow2.setVisible(true);
capsChosen = glWindow2.getGraphicsConfiguration().getNativeGraphicsConfiguration().getChosenCapabilities();
Assert.assertNotNull(capsChosen);
Assert.assertTrue(capsChosen.isOnscreen()==true);
- GLEventListener demo1 = new RedSquare();
- setDemoFields(demo1, window1, glWindow1, false);
glWindow1.addGLEventListener(demo1);
-
- GLEventListener demo2 = new Gears();
- setDemoFields(demo2, window2, glWindow2, false);
glWindow2.addGLEventListener(demo2);
boolean shouldQuit = false;
diff --git a/src/junit/com/jogamp/test/junit/newt/WindowAction.java b/src/junit/com/jogamp/test/junit/newt/parenting/WindowAction.java
index c52b895e6..387a06006 100644
--- a/src/junit/com/jogamp/test/junit/newt/WindowAction.java
+++ b/src/junit/com/jogamp/test/junit/newt/parenting/WindowAction.java
@@ -30,7 +30,7 @@
* SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-package com.jogamp.test.junit.newt;
+package com.jogamp.test.junit.newt.parenting;
import com.jogamp.newt.event.*;
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/NativeWindowFactoryImpl.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/NativeWindowFactoryImpl.java
index 2ee2cb02c..938fb9681 100644
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/NativeWindowFactoryImpl.java
+++ b/src/nativewindow/classes/com/jogamp/nativewindow/impl/NativeWindowFactoryImpl.java
@@ -87,7 +87,9 @@ public class NativeWindowFactoryImpl extends NativeWindowFactory {
throw new IllegalArgumentException("OS " + getNativeOSName(false) + " not yet supported");
}
- nativeWindowConstructor = ReflectionUtil.getConstructor(windowClassName, getClass().getClassLoader(), new Class[] { Object.class, AbstractGraphicsConfiguration.class });
+ nativeWindowConstructor = ReflectionUtil.getConstructor(
+ windowClassName, new Class[] { Object.class, AbstractGraphicsConfiguration.class },
+ getClass().getClassLoader());
} catch (Exception e) {
throw (IllegalArgumentException) new IllegalArgumentException().initCause(e);
}
diff --git a/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java b/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java
index 75d5c33bc..0a1a91876 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java
@@ -78,7 +78,8 @@ public abstract class GraphicsConfigurationFactory {
if (NativeWindowFactory.TYPE_X11.equals(NativeWindowFactory.getNativeWindowType(true))) {
try {
GraphicsConfigurationFactory factory = (GraphicsConfigurationFactory)
- ReflectionUtil.createInstance("com.jogamp.nativewindow.impl.x11.X11GraphicsConfigurationFactory", GraphicsConfigurationFactory.class.getClassLoader(), new Object[] {});
+ ReflectionUtil.createInstance("com.jogamp.nativewindow.impl.x11.X11GraphicsConfigurationFactory", new Object[] {},
+ GraphicsConfigurationFactory.class.getClassLoader());
registerFactory(javax.media.nativewindow.x11.X11GraphicsDevice.class, factory);
} catch (Exception e) {
throw new RuntimeException(e);
diff --git a/src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java b/src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java
index eb52e7211..f716e8ac9 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/NativeWindowFactory.java
@@ -116,7 +116,7 @@ public abstract class NativeWindowFactory {
ClassLoader cl = NativeWindowFactory.class.getClassLoader();
if( TYPE_X11.equals(nativeWindowingTypePure) ) {
- ReflectionUtil.callStaticMethod( X11UtilClassName, cl, "initSingleton", new Class[] { }, new Object[] { } );
+ ReflectionUtil.callStaticMethod( X11UtilClassName, "initSingleton", new Class[] { }, new Object[] { }, cl );
}
registeredFactories = Collections.synchronizedMap(new HashMap());
diff --git a/src/newt/classes/com/jogamp/newt/Display.java b/src/newt/classes/com/jogamp/newt/Display.java
index 193bb26dc..deb4c7abe 100755..100644
--- a/src/newt/classes/com/jogamp/newt/Display.java
+++ b/src/newt/classes/com/jogamp/newt/Display.java
@@ -182,10 +182,9 @@ public abstract class Display {
return true;
}
public EDTUtil getEDTUtil() {
- if( !edtQueried ) {
+ if( null == edtUtil ) {
synchronized (this) {
- if( !edtQueried ) {
- edtQueried = true;
+ if( null == edtUtil ) {
if(NewtFactory.useEDT()) {
final Display f_dpy = this;
Thread current = Thread.currentThread();
@@ -203,12 +202,11 @@ public abstract class Display {
}
return edtUtil;
}
- volatile boolean edtQueried = false;
public void runOnEDTIfAvail(boolean wait, final Runnable task) {
- EDTUtil edtUtil = getEDTUtil();
- if(runCreateAndDestroyOnEDT() && null!=edtUtil) {
- edtUtil.invoke(wait, task);
+ EDTUtil _edtUtil = getEDTUtil();
+ if(runCreateAndDestroyOnEDT() && null!=_edtUtil) {
+ _edtUtil.invoke(wait, task);
} else {
task.run();
}
@@ -238,6 +236,7 @@ public abstract class Display {
if(null!=edtUtil) {
edtUtil.waitUntilStopped();
edtUtil=null;
+ edt=null;
}
aDevice = null;
} else {
@@ -318,11 +317,12 @@ public abstract class Display {
private LinkedList/*<NEWTEvent>*/ events = new LinkedList();
protected void dispatchMessages() {
- if(0==refCount) return; // we should not exist ..
+ if(0==refCount) return; // in destruction ..
+
+ LinkedList/*<NEWTEvent>*/ _events = null;
if(!events.isEmpty()) {
// swap events list to free ASAP
- LinkedList/*<NEWTEvent>*/ _events = null;
synchronized(eventsLock) {
if(!events.isEmpty()) {
_events = events;
@@ -335,10 +335,13 @@ public abstract class Display {
NEWTEventTask eventTask = (NEWTEventTask) iter.next();
NEWTEvent event = eventTask.get();
Object source = event.getSource();
- if(source instanceof Window) {
- ((Window)source).sendEvent(event);
+ if(source instanceof NEWTEventConsumer) {
+ NEWTEventConsumer consumer = (NEWTEventConsumer) source ;
+ if(!consumer.consumeEvent(event)) {
+ enqueueEvent(false, event);
+ }
} else {
- throw new RuntimeException("Event source not a NEWT Window: "+source.getClass().getName()+", "+source);
+ throw new RuntimeException("Event source not a NEWT one: "+source.getClass().getName()+", "+source);
}
eventTask.notifyIssuer();
}
@@ -353,10 +356,6 @@ public abstract class Display {
}
}
- public void enqueueEvent(NEWTEvent e) {
- enqueueEvent(false, e);
- }
-
public void enqueueEvent(boolean wait, NEWTEvent e) {
Object lock = new Object();
NEWTEventTask eTask = new NEWTEventTask(e, wait?lock:null);
diff --git a/src/newt/classes/com/jogamp/newt/NewtFactory.java b/src/newt/classes/com/jogamp/newt/NewtFactory.java
index 3959c6a8d..3959c6a8d 100755..100644
--- a/src/newt/classes/com/jogamp/newt/NewtFactory.java
+++ b/src/newt/classes/com/jogamp/newt/NewtFactory.java
diff --git a/src/newt/classes/com/jogamp/newt/OffscreenWindow.java b/src/newt/classes/com/jogamp/newt/OffscreenWindow.java
index 0f75fbfa9..e85714d4f 100644
--- a/src/newt/classes/com/jogamp/newt/OffscreenWindow.java
+++ b/src/newt/classes/com/jogamp/newt/OffscreenWindow.java
@@ -107,9 +107,8 @@ public class OffscreenWindow extends Window implements SurfaceChangeable {
// nop
return false;
}
- protected boolean setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
+ protected void setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
shouldNotCallThis();
- return false;
}
}
diff --git a/src/newt/classes/com/jogamp/newt/Screen.java b/src/newt/classes/com/jogamp/newt/Screen.java
index 26342519e..26342519e 100755..100644
--- a/src/newt/classes/com/jogamp/newt/Screen.java
+++ b/src/newt/classes/com/jogamp/newt/Screen.java
diff --git a/src/newt/classes/com/jogamp/newt/Window.java b/src/newt/classes/com/jogamp/newt/Window.java
index e9289f5dc..9c724314e 100755..100644
--- a/src/newt/classes/com/jogamp/newt/Window.java
+++ b/src/newt/classes/com/jogamp/newt/Window.java
@@ -34,11 +34,12 @@
package com.jogamp.newt;
import com.jogamp.newt.event.*;
+import com.jogamp.newt.util.*;
import com.jogamp.newt.impl.Debug;
-import com.jogamp.newt.util.EDTUtil;
import com.jogamp.common.util.*;
import javax.media.nativewindow.*;
+import com.jogamp.nativewindow.util.Rectangle;
import com.jogamp.nativewindow.impl.RecursiveToolkitLock;
import java.util.ArrayList;
@@ -46,7 +47,7 @@ import java.util.List;
import java.util.Iterator;
import java.lang.reflect.Method;
-public abstract class Window implements NativeWindow
+public abstract class Window implements NativeWindow, NEWTEventConsumer
{
public static final boolean DEBUG_MOUSE_EVENT = Debug.debug("Window.MouseEvent");
public static final boolean DEBUG_KEY_EVENT = Debug.debug("Window.KeyEvent");
@@ -155,7 +156,7 @@ public abstract class Window implements NativeWindow
return 0 != windowHandle ;
}
if(DEBUG_IMPLEMENTATION) {
- System.err.println("Window.createNative() START ("+getThreadName()+", "+this+")");
+ System.out.println("Window.createNative() START ("+getThreadName()+", "+this+")");
}
if(validateParentWindowHandle()) {
Display dpy = getScreen().getDisplay();
@@ -163,7 +164,7 @@ public abstract class Window implements NativeWindow
setVisibleImpl(true);
}
if(DEBUG_IMPLEMENTATION) {
- System.err.println("Window.createNative() END ("+getThreadName()+", "+this+")");
+ System.out.println("Window.createNative() END ("+getThreadName()+", "+this+")");
}
return 0 != windowHandle ;
}
@@ -190,7 +191,7 @@ public abstract class Window implements NativeWindow
}
} catch (NativeWindowException nwe) {
if(DEBUG_IMPLEMENTATION) {
- System.err.println("Window.getNativeWindowHandle: not successful yet: "+nwe);
+ System.out.println("Window.getNativeWindowHandle: not successful yet: "+nwe);
}
} finally {
if(locked) {
@@ -198,7 +199,7 @@ public abstract class Window implements NativeWindow
}
}
if(DEBUG_IMPLEMENTATION) {
- System.err.println("Window.getNativeWindowHandle: locked "+locked+", "+nativeWindow);
+ System.out.println("Window.getNativeWindowHandle: locked "+locked+", "+nativeWindow);
}
}
return handle;
@@ -245,7 +246,8 @@ public abstract class Window implements NativeWindow
"\n, Visible "+isVisible()+
"\n, Undecorated "+undecorated+
"\n, Fullscreen "+fullscreen+
- "\n, WrappedWindow "+getWrappedWindow());
+ "\n, WrappedWindow "+getWrappedWindow()+
+ "\n, ChildWindows "+childWindows.size());
sb.append(", SurfaceUpdatedListeners num "+surfaceUpdatedListeners.size()+" [");
for (Iterator iter = surfaceUpdatedListeners.iterator(); iter.hasNext(); ) {
@@ -301,6 +303,30 @@ public abstract class Window implements NativeWindow
}
protected void requestFocusImpl() {}
+ /**
+ * May set to a {@link FocusRunnable}, {@link FocusRunnable#run()} before Newt requests the native focus.
+ * This allows notifying a covered window toolkit like AWT that the focus is requested,
+ * hence focus traversal can be made transparent.
+ */
+ public void setFocusAction(FocusRunnable focusAction) {
+ this.focusAction = focusAction;
+ }
+ protected boolean focusAction() {
+ if(null!=focusAction) {
+ return focusAction.run();
+ }
+ return false;
+ }
+ protected FocusRunnable focusAction = null;
+
+ public static interface FocusRunnable {
+ /**
+ * @return false if NEWT shall proceed requesting the focus,
+ * true if NEWT shall not request the focus.
+ */
+ public boolean run();
+ }
+
//
// NativeWindow impl
//
@@ -376,41 +402,38 @@ public abstract class Window implements NativeWindow
public void run() {
windowLock();
try {
- if(DEBUG_WINDOW_EVENT) {
- System.err.println("Window.destroy(deep: "+deep+") START "+getThreadName()+", "+this);
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.destroy(deep: "+deep+") START "+getThreadName()+", "+Window.this);
}
// Childs first ..
- ArrayList listeners = null;
- synchronized(childWindows) {
- listeners = childWindows;
- }
- for(Iterator i = listeners.iterator(); i.hasNext(); ) {
+ synchronized(childWindowsLock) {
+ for(Iterator i = childWindows.iterator(); i.hasNext(); ) {
NativeWindow nw = (NativeWindow) i.next();
+ System.out.println("Window.destroy(deep: "+deep+") CHILD BEGIN");
if(nw instanceof Window) {
- ((Window)nw).destroy(deep);
+ ((Window)nw).sendWindowEvent(WindowEvent.EVENT_WINDOW_DESTROY_NOTIFY);
+ if(deep) {
+ ((Window)nw).destroy(deep);
+ }
} else {
nw.destroy();
}
+ System.out.println("Window.destroy(deep: "+deep+") CHILD END");
+ }
}
// Now us ..
if(deep) {
- synchronized(childWindows) {
+ synchronized(childWindowsLock) {
childWindows = new ArrayList();
}
- synchronized(surfaceUpdatedListeners) {
+ synchronized(surfaceUpdatedListenersLock) {
surfaceUpdatedListeners = new ArrayList();
}
- synchronized(windowListeners) {
- windowListeners = new ArrayList();
- }
- synchronized(mouseListeners) {
- mouseListeners = new ArrayList();
- }
- synchronized(keyListeners) {
- keyListeners = new ArrayList();
- }
+ windowListeners = new ArrayList();
+ mouseListeners = new ArrayList();
+ keyListeners = new ArrayList();
}
Display dpy = null;
Screen scr = null;
@@ -428,8 +451,8 @@ public abstract class Window implements NativeWindow
dpy.destroy();
}
}
- if(DEBUG_WINDOW_EVENT) {
- System.err.println("Window.destroy(deep: "+deep+") END "+getThreadName()+", "+this);
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.destroy(deep: "+deep+") END "+getThreadName()+", "+Window.this);
}
} finally {
windowUnlock();
@@ -466,16 +489,16 @@ public abstract class Window implements NativeWindow
try{
if(DEBUG_IMPLEMENTATION || DEBUG_WINDOW_EVENT) {
String msg = new String("!!! Window Invalidate(deep: "+deep+") "+getThreadName());
- System.err.println(msg);
- //Exception e = new Exception(msg);
- //e.printStackTrace();
+ //System.out.println(msg);
+ Exception e = new Exception(msg);
+ e.printStackTrace();
}
windowHandle = 0;
- visible=false;
- fullscreen=false;
+ visible = false;
+ fullscreen = false;
if(deep) {
- screen = null;
+ screen = null;
parentWindowHandle = 0;
parentNativeWindow = null;
caps = null;
@@ -593,43 +616,6 @@ public abstract class Window implements NativeWindow
return false;
}
- /**
- * If set to true, the default value, this NEWT Window implementation will
- * handle the destruction (ie {@link #destroy()} call) within {@link #windowDestroyNotify()} implementation.<br>
- * If set to false, it's up to the caller/owner to handle destruction within {@link #windowDestroyNotify()}.
- */
- public void setHandleDestroyNotify(boolean b) {
- handleDestroyNotify = b;
- }
-
- protected void windowDestroyNotify() {
- if(DEBUG_WINDOW_EVENT) {
- System.err.println("Window.windowDestroyNotify START "+getThreadName());
- }
-
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_DESTROY_NOTIFY);
-
- if(handleDestroyNotify && !isDestroyed()) {
- destroy();
- }
-
- if(DEBUG_WINDOW_EVENT) {
- System.err.println("Window.windowDestroyeNotify END "+getThreadName());
- }
- }
-
- protected void windowDestroyed() {
- if(DEBUG_WINDOW_EVENT) {
- System.err.println("Window.windowDestroyed "+getThreadName());
- }
- invalidate();
- }
-
- protected boolean reparentWindowImpl() {
- // default implementation, no native reparenting support
- return false;
- }
-
class ReparentAction implements Runnable {
NativeWindow newParent;
Screen newScreen;
@@ -652,7 +638,7 @@ public abstract class Window implements NativeWindow
}
if(DEBUG_IMPLEMENTATION) {
- System.err.println("reparent: START ("+getThreadName()+") windowHandle "+toHexString(windowHandle)+" parentWindowHandle "+toHexString(parentWindowHandle)+" -> "+toHexString(newParentHandle)+", visible "+visible+", parentNativeWindow "+(null!=parentNativeWindow));
+ System.out.println("reparent: START ("+getThreadName()+") windowHandle "+toHexString(windowHandle)+" parentWindowHandle "+toHexString(parentWindowHandle)+" -> "+toHexString(newParentHandle)+", visible "+visible+", parentNativeWindow "+(null!=parentNativeWindow));
}
if(null!=parentNativeWindow && parentNativeWindow instanceof Window) {
@@ -671,8 +657,16 @@ public abstract class Window implements NativeWindow
x = 0;
y = 0;
}
+ getScreen().getDisplay().dispatchMessages(); // status up2date
+ boolean wasVisible = isVisible();
+ if(wasVisible) {
+ Window.this.visible = false;
+ setVisibleImpl(false);
+ getScreen().getDisplay().dispatchMessages(); // status up2date
+ }
boolean reparentRes = false;
reparentRes = reparentWindowImpl();
+ getScreen().getDisplay().dispatchMessages(); // status up2date
if(!reparentRes) {
parentWindowHandle = 0;
@@ -680,11 +674,17 @@ public abstract class Window implements NativeWindow
if( 0 != windowHandle ) {
destroy(false);
}
+ } else {
+ if(wasVisible) {
+ Window.this.visible = true;
+ setVisibleImpl(true);
+ getScreen().getDisplay().dispatchMessages(); // status up2date
+ }
}
}
if(DEBUG_IMPLEMENTATION) {
- System.err.println("reparentWindow: END ("+getThreadName()+") windowHandle "+toHexString(windowHandle)+", visible: "+visible+", parentWindowHandle "+toHexString(parentWindowHandle)+", parentNativeWindow "+(null!=parentNativeWindow));
+ System.out.println("reparentWindow: END ("+getThreadName()+") windowHandle "+toHexString(windowHandle)+", visible: "+visible+", parentWindowHandle "+toHexString(parentWindowHandle)+", parentNativeWindow "+(null!=parentNativeWindow));
}
} finally {
windowUnlock();
@@ -707,9 +707,10 @@ public abstract class Window implements NativeWindow
public void reparentWindow(NativeWindow newParent, Screen newScreen) {
if(!isDestroyed()) {
runOnEDTIfAvail(true, new ReparentAction(newParent, newScreen));
- // if( isVisible() ) {
- enqueueWindowEvent(true, WindowEvent.EVENT_WINDOW_RESIZED); // trigger a resize/relayout to listener
- // }
+ if( isVisible() ) {
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED); // trigger a resize/relayout to listener
+ windowRepaint(0, 0, getWidth(), getHeight());
+ }
}
}
@@ -722,17 +723,15 @@ public abstract class Window implements NativeWindow
windowLock();
try{
if( !isDestroyed() ) {
- ArrayList listeners = null;
- synchronized(childWindows) {
- listeners = childWindows;
- }
- if(!visible && listeners.size()>0) {
- for(Iterator i = listeners.iterator(); i.hasNext(); ) {
+ if(!visible && childWindows.size()>0) {
+ synchronized(childWindowsLock) {
+ for(Iterator i = childWindows.iterator(); i.hasNext(); ) {
NativeWindow nw = (NativeWindow) i.next();
if(nw instanceof Window) {
((Window)nw).setVisible(false);
}
}
+ }
}
if(0==windowHandle && visible) {
Window.this.visible = visible;
@@ -745,18 +744,20 @@ public abstract class Window implements NativeWindow
setVisibleImpl(visible);
}
}
- if(0!=windowHandle && visible && listeners.size()>0) {
- for(Iterator i = listeners.iterator(); i.hasNext(); ) {
+ if(0!=windowHandle && visible && childWindows.size()>0) {
+ synchronized(childWindowsLock) {
+ for(Iterator i = childWindows.iterator(); i.hasNext(); ) {
NativeWindow nw = (NativeWindow) i.next();
if(nw instanceof Window) {
((Window)nw).setVisible(true);
}
}
+ }
}
}
if(DEBUG_IMPLEMENTATION) {
- System.err.println("Window setVisible: END ("+getThreadName()+") "+x+"/"+y+" "+width+"x"+height+", fs "+fullscreen+", windowHandle "+toHexString(windowHandle)+", visible: "+Window.this.visible);
+ System.out.println("Window setVisible: END ("+getThreadName()+") "+x+"/"+y+" "+width+"x"+height+", fs "+fullscreen+", windowHandle "+toHexString(windowHandle)+", visible: "+Window.this.visible);
}
} finally {
windowUnlock();
@@ -792,7 +793,7 @@ public abstract class Window implements NativeWindow
public void setVisible(boolean visible) {
if(DEBUG_IMPLEMENTATION) {
String msg = new String("Window setVisible: START ("+getThreadName()+") "+x+"/"+y+" "+width+"x"+height+", fs "+fullscreen+", windowHandle "+toHexString(windowHandle)+", visible: "+this.visible+" -> "+visible+", parentWindowHandle "+toHexString(parentWindowHandle)+", parentNativeWindow "+(null!=parentNativeWindow));
- //System.err.println(msg);
+ //System.out.println(msg);
Exception ee = new Exception(msg);
ee.printStackTrace();
}
@@ -829,7 +830,7 @@ public abstract class Window implements NativeWindow
try{
if(DEBUG_IMPLEMENTATION) {
String msg = new String("Window setSize: START "+this.width+"x"+this.height+" -> "+width+"x"+height+", fs "+fullscreen+", windowHandle "+toHexString(windowHandle)+", visible "+visible);
- //System.err.println(msg);
+ //System.out.println(msg);
Exception e = new Exception(msg);
e.printStackTrace();
}
@@ -846,7 +847,7 @@ public abstract class Window implements NativeWindow
this.width = width;
this.height = height;
} else if ( 0 != windowHandle ) {
- // this width/height will be set by windowChanged, called by X11
+ // this width/height will be set by windowChanged, called by the native implementation
setSizeImpl(width, height);
} else {
this.width = width;
@@ -855,7 +856,7 @@ public abstract class Window implements NativeWindow
}
}
if(DEBUG_IMPLEMENTATION) {
- System.err.println("Window setSize: END "+this.width+"x"+this.height+", visibleAction "+visibleAction);
+ System.out.println("Window setSize: END "+this.width+"x"+this.height+", visibleAction "+visibleAction);
}
} finally {
windowUnlock();
@@ -880,7 +881,7 @@ public abstract class Window implements NativeWindow
windowLock();
try{
if(DEBUG_IMPLEMENTATION) {
- System.err.println("Window setPosition: "+this.x+"/"+this.y+" -> "+x+"/"+y+", fs "+fullscreen+", windowHandle "+toHexString(windowHandle));
+ System.out.println("Window setPosition: "+this.x+"/"+this.y+" -> "+x+"/"+y+", fs "+fullscreen+", windowHandle "+toHexString(windowHandle));
}
if ( this.x != x || this.y != y ) {
if(!fullscreen) {
@@ -911,34 +912,42 @@ public abstract class Window implements NativeWindow
w = screen.getWidth();
h = screen.getHeight();
} else {
- x = nfs_x;
- y = nfs_y;
+ if(0!=parentWindowHandle) {
+ x=0;
+ y=0;
+ } else {
+ x = nfs_x;
+ y = nfs_y;
+ }
w = nfs_width;
h = nfs_height;
}
if(DEBUG_IMPLEMENTATION || DEBUG_WINDOW_EVENT) {
- System.err.println("X11Window fs: "+fullscreen+" "+x+"/"+y+" "+w+"x"+h+", "+isUndecorated());
+ System.out.println("X11Window fs: "+fullscreen+" "+x+"/"+y+" "+w+"x"+h+", "+isUndecorated());
}
- this.fullscreen = setFullscreenImpl(fullscreen, x, y, w, h);
+ this.fullscreen = fullscreen;
+ setFullscreenImpl(fullscreen, x, y, w, h);
}
- return this.fullscreen;
} finally {
windowUnlock();
}
+ if( isVisible() ) {
+ windowRepaint(0, 0, getWidth(), getHeight());
+ }
+ return this.fullscreen;
}
- protected abstract boolean setFullscreenImpl(boolean fullscreen, int x, int y, int widht, int height);
+ protected abstract void setFullscreenImpl(boolean fullscreen, int x, int y, int widht, int height);
//
// Child Window Management
//
private ArrayList childWindows = new ArrayList();
+ private Object childWindowsLock = new Object();
protected void removeChild(NativeWindow win) {
- synchronized(childWindows) {
- ArrayList newChildWindows = (ArrayList) childWindows.clone();
- newChildWindows.remove(win);
- childWindows = newChildWindows;
+ synchronized(childWindowsLock) {
+ childWindows.remove(win);
}
}
@@ -946,34 +955,72 @@ public abstract class Window implements NativeWindow
if (win == null) {
return;
}
- synchronized(childWindows) {
- ArrayList newChildWindows = (ArrayList) childWindows.clone();
- newChildWindows.add(win);
- childWindows = newChildWindows;
+ synchronized(childWindowsLock) {
+ childWindows.add(win);
}
}
//
// Generic Event Support
//
+ private void doEvent(boolean enqueue, boolean wait, com.jogamp.newt.event.NEWTEvent event) {
+ boolean done = false;
+
+ if(!enqueue) {
+ done = consumeEvent(event);
+ wait = done; // don't wait if event can't be consumed now
+ }
- public void sendEvent(NEWTEvent e) {
+ if(!done) {
+ enqueueEvent(wait, event);
+ }
+ }
+
+ public void enqueueEvent(boolean wait, com.jogamp.newt.event.NEWTEvent event) {
+ if(!getInnerWindow().isDestroyed()) {
+ getInnerWindow().getScreen().getDisplay().enqueueEvent(wait, event);
+ }
+ }
+
+ public boolean consumeEvent(NEWTEvent e) {
+ switch(e.getEventType()) {
+ case WindowEvent.EVENT_WINDOW_REPAINT:
+ if( windowIsLocked() ) {
+ if(!repaintQueued) {
+ repaintQueued=true;
+ return false;
+ } else {
+ return true;
+ }
+ } else {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.windowRepaint: "+e);
+ // Exception ee = new Exception("Window.windowRepaint: "+e);
+ // ee.printStackTrace();
+ }
+ repaintQueued=false;
+ }
+ break;
+ default:
+ break;
+ }
if(e instanceof WindowEvent) {
- sendWindowEvent((WindowEvent)e);
+ getInnerWindow().consumeWindowEvent((WindowEvent)e);
} else if(e instanceof KeyEvent) {
- sendKeyEvent((KeyEvent)e);
+ getInnerWindow().consumeKeyEvent((KeyEvent)e);
} else if(e instanceof MouseEvent) {
- sendMouseEvent((MouseEvent)e);
- } else if(e instanceof PaintEvent) {
- sendPaintEvent((PaintEvent)e);
+ getInnerWindow().consumeMouseEvent((MouseEvent)e);
}
+ return true;
}
+ protected boolean repaintQueued = false;
//
// SurfaceUpdatedListener Support
//
private ArrayList surfaceUpdatedListeners = new ArrayList();
+ private Object surfaceUpdatedListenersLock = new Object();
/**
* Appends the given {@link com.jogamp.newt.event.SurfaceUpdatedListener} to the end of
@@ -999,13 +1046,11 @@ public abstract class Window implements NativeWindow
if(l == null) {
return;
}
- synchronized(surfaceUpdatedListeners) {
+ synchronized(surfaceUpdatedListenersLock) {
if(0>index) {
index = surfaceUpdatedListeners.size();
}
- ArrayList newSurfaceUpdatedListeners = (ArrayList) surfaceUpdatedListeners.clone();
- newSurfaceUpdatedListeners.add(index, l);
- surfaceUpdatedListeners = newSurfaceUpdatedListeners;
+ surfaceUpdatedListeners.add(index, l);
}
}
@@ -1013,21 +1058,19 @@ public abstract class Window implements NativeWindow
if (l == null) {
return;
}
- synchronized(surfaceUpdatedListeners) {
- ArrayList newSurfaceUpdatedListeners = (ArrayList) surfaceUpdatedListeners.clone();
- newSurfaceUpdatedListeners.remove(l);
- surfaceUpdatedListeners = newSurfaceUpdatedListeners;
+ synchronized(surfaceUpdatedListenersLock) {
+ surfaceUpdatedListeners.remove(l);
}
}
public void removeAllSurfaceUpdatedListener() {
- synchronized(surfaceUpdatedListeners) {
+ synchronized(surfaceUpdatedListenersLock) {
surfaceUpdatedListeners = new ArrayList();
}
}
public SurfaceUpdatedListener getSurfaceUpdatedListener(int index) {
- synchronized(surfaceUpdatedListeners) {
+ synchronized(surfaceUpdatedListenersLock) {
if(0>index) {
index = surfaceUpdatedListeners.size()-1;
}
@@ -1036,19 +1079,17 @@ public abstract class Window implements NativeWindow
}
public SurfaceUpdatedListener[] getSurfaceUpdatedListeners() {
- synchronized(surfaceUpdatedListeners) {
+ synchronized(surfaceUpdatedListenersLock) {
return (SurfaceUpdatedListener[]) surfaceUpdatedListeners.toArray();
}
}
public void surfaceUpdated(Object updater, NativeWindow window, long when) {
- ArrayList listeners = null;
- synchronized(surfaceUpdatedListeners) {
- listeners = surfaceUpdatedListeners;
- }
- for(Iterator i = listeners.iterator(); i.hasNext(); ) {
+ synchronized(surfaceUpdatedListenersLock) {
+ for(Iterator i = surfaceUpdatedListeners.iterator(); i.hasNext(); ) {
SurfaceUpdatedListener l = (SurfaceUpdatedListener) i.next();
l.surfaceUpdated(updater, window, when);
+ }
}
}
@@ -1061,13 +1102,21 @@ public abstract class Window implements NativeWindow
private int lastMouseClickCount = 0; // last mouse button click count
public static final int ClickTimeout = 300;
- protected void enqueueMouseEvent(int eventType, int modifiers,
+ public void sendMouseEvent(int eventType, int modifiers,
+ int x, int y, int button, int rotation) {
+ doMouseEvent(false, false, eventType, modifiers, x, y, button, rotation);
+ }
+ public void enqueueMouseEvent(boolean wait, int eventType, int modifiers,
int x, int y, int button, int rotation) {
+ doMouseEvent(true, wait, eventType, modifiers, x, y, button, rotation);
+ }
+ private void doMouseEvent(boolean enqueue, boolean wait, int eventType, int modifiers,
+ int x, int y, int button, int rotation) {
if(x<0||y<0||x>=width||y>=height) {
return; // .. invalid ..
}
if(DEBUG_MOUSE_EVENT) {
- System.err.println("enqueueMouseEvent: "+MouseEvent.getEventTypeString(eventType)+
+ System.out.println("doMouseEvent: enqueue"+enqueue+", wait "+wait+", "+MouseEvent.getEventTypeString(eventType)+
", mod "+modifiers+", pos "+x+"/"+y+", button "+button);
}
if(button<0||button>MouseEvent.BUTTON_NUMBER) {
@@ -1111,12 +1160,12 @@ public abstract class Window implements NativeWindow
} else {
e = new MouseEvent(eventType, this, when, modifiers, x, y, 0, button, 0);
}
- screen.getDisplay().enqueueEvent(e);
+ doEvent(enqueue, wait, e);
if(null!=eClicked) {
if(DEBUG_MOUSE_EVENT) {
- System.err.println("enqueueMouseEvent: synthesized MOUSE_CLICKED event");
+ System.out.println("doMouseEvent: synthesized MOUSE_CLICKED event");
}
- screen.getDisplay().enqueueEvent(eClicked);
+ doEvent(enqueue, wait, eClicked);
}
}
@@ -1143,52 +1192,41 @@ public abstract class Window implements NativeWindow
if(l == null) {
return;
}
- synchronized(mouseListeners) {
- if(0>index) {
- index = mouseListeners.size();
- }
- ArrayList newMouseListeners = (ArrayList) mouseListeners.clone();
- newMouseListeners.add(index, l);
- mouseListeners = newMouseListeners;
+ ArrayList clonedListeners = (ArrayList) mouseListeners.clone();
+ if(0>index) {
+ index = clonedListeners.size();
}
+ clonedListeners.add(index, l);
+ mouseListeners = clonedListeners;
}
public void removeMouseListener(MouseListener l) {
if (l == null) {
return;
}
- synchronized(mouseListeners) {
- ArrayList newMouseListeners = (ArrayList) mouseListeners.clone();
- newMouseListeners.remove(l);
- mouseListeners = newMouseListeners;
- }
+ ArrayList clonedListeners = (ArrayList) mouseListeners.clone();
+ clonedListeners.remove(l);
+ mouseListeners = clonedListeners;
}
public MouseListener getMouseListener(int index) {
- synchronized(mouseListeners) {
- if(0>index) {
- index = mouseListeners.size()-1;
- }
- return (MouseListener) mouseListeners.get(index);
+ ArrayList clonedListeners = (ArrayList) mouseListeners.clone();
+ if(0>index) {
+ index = clonedListeners.size()-1;
}
+ return (MouseListener) clonedListeners.get(index);
}
public MouseListener[] getMouseListeners() {
- synchronized(mouseListeners) {
- return (MouseListener[]) mouseListeners.toArray();
- }
+ return (MouseListener[]) mouseListeners.toArray();
}
- protected void sendMouseEvent(MouseEvent e) {
+ protected void consumeMouseEvent(MouseEvent e) {
if(DEBUG_MOUSE_EVENT) {
- System.err.println("sendMouseEvent: event: "+e);
+ System.out.println("consumeMouseEvent: event: "+e);
}
- ArrayList listeners = null;
- synchronized(mouseListeners) {
- listeners = mouseListeners;
- }
- for(Iterator i = listeners.iterator(); i.hasNext(); ) {
+ for(Iterator i = mouseListeners.iterator(); i.hasNext(); ) {
MouseListener l = (MouseListener) i.next();
switch(e.getEventType()) {
case MouseEvent.EVENT_MOUSE_CLICKED:
@@ -1225,10 +1263,12 @@ public abstract class Window implements NativeWindow
// KeyListener/Event Support
//
- protected void enqueueKeyEvent(int eventType, int modifiers, int keyCode, char keyChar) {
- screen.getDisplay().enqueueEvent(
- new KeyEvent(eventType, this, System.currentTimeMillis(),
- modifiers, keyCode, keyChar) );
+ public void sendKeyEvent(int eventType, int modifiers, int keyCode, char keyChar) {
+ consumeKeyEvent(new KeyEvent(eventType, this, System.currentTimeMillis(), modifiers, keyCode, keyChar) );
+ }
+
+ public void enqueueKeyEvent(boolean wait, int eventType, int modifiers, int keyCode, char keyChar) {
+ enqueueEvent(wait, new KeyEvent(eventType, this, System.currentTimeMillis(), modifiers, keyCode, keyChar) );
}
/**
@@ -1253,53 +1293,42 @@ public abstract class Window implements NativeWindow
if(l == null) {
return;
}
- synchronized(keyListeners) {
- if(0>index) {
- index = keyListeners.size();
- }
- ArrayList newKeyListeners = (ArrayList) keyListeners.clone();
- newKeyListeners.add(index, l);
- keyListeners = newKeyListeners;
+ ArrayList clonedListeners = (ArrayList) keyListeners.clone();
+ if(0>index) {
+ index = clonedListeners.size();
}
+ clonedListeners.add(index, l);
+ keyListeners = clonedListeners;
}
public void removeKeyListener(KeyListener l) {
if (l == null) {
return;
}
- synchronized(keyListeners) {
- ArrayList newKeyListeners = (ArrayList) keyListeners.clone();
- newKeyListeners.remove(l);
- keyListeners = newKeyListeners;
- }
+ ArrayList clonedListeners = (ArrayList) keyListeners.clone();
+ clonedListeners.remove(l);
+ keyListeners = clonedListeners;
}
public KeyListener getKeyListener(int index) {
- synchronized(keyListeners) {
- if(0>index) {
- index = keyListeners.size()-1;
- }
- return (KeyListener) keyListeners.get(index);
+ ArrayList clonedListeners = (ArrayList) keyListeners.clone();
+ if(0>index) {
+ index = clonedListeners.size()-1;
}
+ return (KeyListener) clonedListeners.get(index);
}
public KeyListener[] getKeyListeners() {
- synchronized(keyListeners) {
- return (KeyListener[]) keyListeners.toArray();
- }
+ return (KeyListener[]) keyListeners.toArray();
}
private ArrayList keyListeners = new ArrayList();
- protected void sendKeyEvent(KeyEvent e) {
+ protected void consumeKeyEvent(KeyEvent e) {
if(DEBUG_KEY_EVENT) {
- System.err.println("sendKeyEvent: "+e);
- }
- ArrayList listeners = null;
- synchronized(keyListeners) {
- listeners = keyListeners;
+ System.out.println("consumeKeyEvent: "+e);
}
- for(Iterator i = listeners.iterator(); i.hasNext(); ) {
+ for(Iterator i = keyListeners.iterator(); i.hasNext(); ) {
KeyListener l = (KeyListener) i.next();
switch(e.getEventType()) {
case KeyEvent.EVENT_KEY_PRESSED:
@@ -1320,14 +1349,12 @@ public abstract class Window implements NativeWindow
//
// WindowListener/Event Support
//
- protected void enqueueWindowEvent(int eventType) {
- enqueueWindowEvent(false, eventType);
+ public void sendWindowEvent(int eventType) {
+ consumeWindowEvent( new WindowEvent(eventType, this, System.currentTimeMillis()) );
}
- protected void enqueueWindowEvent(boolean wait, int eventType) {
- WindowEvent event = new WindowEvent(eventType, this, System.currentTimeMillis());
- screen.getDisplay().enqueueEvent( wait, event );
- // sendWindowEvent ( event ); // FIXME: Think about performance/lag .. ?
+ public void enqueueWindowEvent(boolean wait, int eventType) {
+ enqueueEvent( wait, new WindowEvent(eventType, this, System.currentTimeMillis()) );
}
private ArrayList windowListeners = new ArrayList();
@@ -1356,51 +1383,40 @@ public abstract class Window implements NativeWindow
if(l == null) {
return;
}
- synchronized(windowListeners) {
- if(0>index) {
- index = windowListeners.size();
- }
- ArrayList newWindowListeners = (ArrayList) windowListeners.clone();
- newWindowListeners.add(index, l);
- windowListeners = newWindowListeners;
+ ArrayList clonedListeners = (ArrayList) windowListeners.clone();
+ if(0>index) {
+ index = clonedListeners.size();
}
+ clonedListeners.add(index, l);
+ windowListeners = clonedListeners;
}
public void removeWindowListener(WindowListener l) {
if (l == null) {
return;
}
- synchronized(windowListeners) {
- ArrayList newWindowListeners = (ArrayList) windowListeners.clone();
- newWindowListeners.remove(l);
- windowListeners = newWindowListeners;
- }
+ ArrayList clonedListeners = (ArrayList) windowListeners.clone();
+ clonedListeners.remove(l);
+ windowListeners = clonedListeners;
}
public WindowListener getWindowListener(int index) {
- synchronized(windowListeners) {
- if(0>index) {
- index = windowListeners.size()-1;
- }
- return (WindowListener) windowListeners.get(index);
+ ArrayList clonedListeners = (ArrayList) windowListeners.clone();
+ if(0>index) {
+ index = clonedListeners.size()-1;
}
+ return (WindowListener) clonedListeners.get(index);
}
public WindowListener[] getWindowListeners() {
- synchronized(windowListeners) {
- return (WindowListener[]) windowListeners.toArray();
- }
+ return (WindowListener[]) windowListeners.toArray();
}
- protected void sendWindowEvent(WindowEvent e) {
+ protected void consumeWindowEvent(WindowEvent e) {
if(DEBUG_WINDOW_EVENT) {
- System.err.println("sendWindowEvent: "+e);
- }
- ArrayList listeners = null;
- synchronized(windowListeners) {
- listeners = windowListeners;
+ System.out.println("consumeWindowEvent: "+e);
}
- for(Iterator i = listeners.iterator(); i.hasNext(); ) {
+ for(Iterator i = windowListeners.iterator(); i.hasNext(); ) {
WindowListener l = (WindowListener) i.next();
switch(e.getEventType()) {
case WindowEvent.EVENT_WINDOW_RESIZED:
@@ -1418,6 +1434,9 @@ public abstract class Window implements NativeWindow
case WindowEvent.EVENT_WINDOW_LOST_FOCUS:
l.windowLostFocus(e);
break;
+ case WindowEvent.EVENT_WINDOW_REPAINT:
+ l.windowRepaint((WindowUpdateEvent)e);
+ break;
default:
throw
new NativeWindowException("Unexpected window event type "
@@ -1426,78 +1445,116 @@ public abstract class Window implements NativeWindow
}
}
-
- //
- // PaintListener/Event Support
- //
-
- private ArrayList paintListeners = new ArrayList();
-
- /**
- * Appends the given {@link com.jogamp.newt.event.PaintListener} to the end of
- * the list.
+ /**
+ * @param focusGained
*/
- public void addPaintListener(PaintListener l) {
- getInnerWindow().addPaintListener(-1, l);
+ protected void focusChanged(boolean focusGained) {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.focusChanged: "+focusGained);
+ }
+ if (focusGained) {
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_GAINED_FOCUS);
+ } else {
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_LOST_FOCUS);
+ }
}
- /**
- * Inserts the given {@link com.jogamp.newt.event.PaintListener} at the
- * specified position in the list.<br>
+ protected void visibleChanged(boolean visible) {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.visibleChanged: "+this.visible+" -> "+visible);
+ }
+ this.visible = visible ;
+ }
- * @param index Position where the listener will be inserted.
- * Should be within (0 <= index && index <= size()).
- * An index value of -1 is interpreted as the end of the list, size().
- * @param l The listener object to be inserted
- * @throws IndexOutOfBoundsException If the index is not within (0 <= index && index <= size()), or -1
- */
- public void addPaintListener(int index, PaintListener l) {
- if(l == null) {
- return;
+ protected void sizeChanged(int newWidth, int newHeight) {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.sizeChanged: "+width+"x"+height+" -> "+newWidth+"x"+newHeight);
+ }
+ if(width != newWidth || height != newHeight) {
+ width = newWidth;
+ height = newHeight;
+ if(!fullscreen) {
+ nfs_width=width;
+ nfs_height=height;
+ }
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED);
}
- synchronized(paintListeners) {
- if(0>index) {
- index = paintListeners.size();
+ }
+
+ protected void positionChanged(int newX, int newY) {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.positionChanged: "+x+"/"+y+" -> "+newX+"/"+newY);
+ }
+ if( 0==parentWindowHandle && ( x != newX || y != newY ) ) {
+ x = newX;
+ y = newY;
+ if(!fullscreen) {
+ nfs_x=x;
+ nfs_y=y;
}
- ArrayList newPaintListeners = (ArrayList) paintListeners.clone();
- newPaintListeners.add(index, l);
- paintListeners = newPaintListeners;
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_MOVED);
}
}
- public void removePaintListener(PaintListener l) {
- if (l == null) {
- return;
+ /**
+ * If set to true, the default value, this NEWT Window implementation will
+ * handle the destruction (ie {@link #destroy()} call) within {@link #windowDestroyNotify()} implementation.<br>
+ * If set to false, it's up to the caller/owner to handle destruction within {@link #windowDestroyNotify()}.
+ */
+ public void setHandleDestroyNotify(boolean b) {
+ handleDestroyNotify = b;
+ }
+
+ protected void windowDestroyNotify() {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.windowDestroyNotify START "+getThreadName());
}
- synchronized(paintListeners) {
- ArrayList newPaintListeners = (ArrayList) paintListeners.clone();
- newPaintListeners.remove(l);
- paintListeners = newPaintListeners;
+
+ enqueueWindowEvent(false, WindowEvent.EVENT_WINDOW_DESTROY_NOTIFY);
+
+ if(handleDestroyNotify && !isDestroyed()) {
+ destroy();
+ }
+
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.windowDestroyeNotify END "+getThreadName());
}
}
- public PaintListener getPaintListener(int index) {
- synchronized(paintListeners) {
- if(0>index) {
- index = paintListeners.size()-1;
- }
- return (PaintListener) paintListeners.get(index);
+ protected void windowDestroyed() {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("Window.windowDestroyed "+getThreadName());
}
+ invalidate();
}
- protected void sendPaintEvent(int eventType, int x, int y, int w, int h) {
- sendPaintEvent( new PaintEvent(eventType, this, System.currentTimeMillis(), x, y, w, h) );
+ public boolean getPropagateRepaint() {
+ return propagateRepaint;
+ }
+ public void setPropagateRepaint(boolean v) {
+ propagateRepaint = v;
}
+ protected boolean propagateRepaint = true;
- protected void sendPaintEvent(PaintEvent e) {
- ArrayList listeners = null;
- synchronized(paintListeners) {
- listeners = paintListeners;
+ public void windowRepaint(int x, int y, int width, int height) {
+ if(!propagateRepaint) {
+ return;
}
- for(Iterator i = listeners.iterator(); i.hasNext(); ) {
- PaintListener l = (PaintListener) i.next();
- l.exposed(e);
+ if(0>width) {
+ width=this.width;
}
+ if(0>height) {
+ height=this.height;
+ }
+
+ NEWTEvent e = new WindowUpdateEvent(WindowEvent.EVENT_WINDOW_REPAINT, this, System.currentTimeMillis(),
+ new Rectangle(x, y, width, height));
+ doEvent(false, false, e);
+ }
+
+ protected boolean reparentWindowImpl() {
+ // default implementation, no native reparenting support
+ return false;
}
//
diff --git a/src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java b/src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java
index a84e571e4..6fd924e66 100644
--- a/src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java
+++ b/src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java
@@ -35,13 +35,21 @@ package com.jogamp.newt.awt;
import java.lang.reflect.*;
import java.security.*;
+import java.awt.Button;
import java.awt.Canvas;
+import java.awt.Component;
+import java.awt.EventQueue;
+import java.awt.Frame;
+import java.awt.Graphics;
import javax.media.nativewindow.*;
-// import javax.media.nativewindow.awt.*;
import com.jogamp.newt.event.awt.AWTAdapter;
import com.jogamp.newt.event.awt.AWTParentWindowAdapter;
+import com.jogamp.newt.event.WindowEvent;
+import com.jogamp.newt.event.WindowAdapter;
+import com.jogamp.newt.event.MouseEvent;
+import com.jogamp.newt.event.MouseAdapter;
import com.jogamp.newt.Screen;
import com.jogamp.newt.Window;
import com.jogamp.newt.impl.Debug;
@@ -68,10 +76,38 @@ public class NewtCanvasAWT extends java.awt.Canvas {
setNEWTChild(child);
}
+ class FocusAction implements Window.FocusRunnable {
+ public boolean run() {
+ if ( EventQueue.isDispatchThread() ) {
+ focusActionImpl.run();
+ } else {
+ try {
+ EventQueue.invokeAndWait(focusActionImpl);
+ } catch (Exception e) {
+ throw new NativeWindowException(e);
+ }
+ }
+ return focusActionImpl.result;
+ }
+
+ class FocusActionImpl implements Runnable {
+ public final boolean result = false; // NEWT shall always proceed requesting the native focus
+ public void run() {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("FocusActionImpl.run() "+Window.getThreadName());
+ }
+ NewtCanvasAWT.this.requestFocusAWT();
+ }
+ }
+ FocusActionImpl focusActionImpl = new FocusActionImpl();
+ }
+ FocusAction focusAction = new FocusAction();
+
/** sets a new NEWT child, provoking reparenting on the NEWT level. */
public NewtCanvasAWT setNEWTChild(Window child) {
if(newtChild!=child) {
newtChild = child;
+ newtChild.setFocusAction(focusAction);
if(null!=parent) {
java.awt.Container cont = getContainer(this);
// reparent right away, addNotify has been called already
@@ -101,12 +137,12 @@ public class NewtCanvasAWT extends java.awt.Canvas {
}
static java.awt.Container getContainer(java.awt.Component comp) {
- while( null != comp && !(comp instanceof java.awt.Container) ) {
+ while( null != comp ) {
+ if( comp instanceof java.awt.Container ) {
+ return (java.awt.Container) comp;
+ }
comp = comp.getParent();
}
- if(comp instanceof java.awt.Container) {
- return (java.awt.Container) comp;
- }
return null;
}
@@ -117,7 +153,8 @@ public class NewtCanvasAWT extends java.awt.Canvas {
if(DEBUG_IMPLEMENTATION) {
// if ( isShowing() == false ) -> Container was not visible yet.
// if ( isShowing() == true ) -> Container is already visible.
- System.err.println("NewtCanvasAWT.addNotify: "+newtChild+", "+this+", visible "+isVisible()+", showing "+isShowing()+", displayable "+isDisplayable()+" -> "+cont);
+ System.err.println("NewtCanvasAWT.addNotify: "+newtChild+", "+this+", visible "+isVisible()+", showing "+isShowing()+
+ ", displayable "+isDisplayable()+" -> "+cont);
}
reparentWindow(true, cont);
}
@@ -154,6 +191,8 @@ public class NewtCanvasAWT extends java.awt.Canvas {
newtChild.reparentWindow(parent, screen);
newtChild.setVisible(true);
setWindowAdapter(true);
+ newtChild.sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED); // trigger a resize/relayout to listener
+ newtChild.windowRepaint(0, 0, newtChild.getWidth(), newtChild.getHeight());
}
} else {
setWindowAdapter(false);
@@ -161,7 +200,61 @@ public class NewtCanvasAWT extends java.awt.Canvas {
newtChild.setVisible(false);
newtChild.reparentWindow(null, null);
}
- }
+ }
+
+ public void paint(Graphics g) {
+ if(null!=newtChild) {
+ newtChild.windowRepaint(0, 0, getWidth(), getHeight());
+ }
+ }
+ public void update(Graphics g) {
+ if(null!=newtChild) {
+ newtChild.windowRepaint(0, 0, getWidth(), getHeight());
+ }
+ }
+
+ void requestFocusAWT() {
+ super.requestFocus();
+ }
+
+ public void requestFocus() {
+ super.requestFocus();
+ if(null!=newtChild) {
+ newtChild.setFocusAction(null);
+ newtChild.requestFocus();
+ newtChild.setFocusAction(focusAction);
+ }
+ }
+
+ public boolean requestFocus(boolean temporary) {
+ boolean res = super.requestFocus(temporary);
+ if(res && null!=newtChild) {
+ newtChild.setFocusAction(null);
+ newtChild.requestFocus();
+ newtChild.setFocusAction(focusAction);
+ }
+ return res;
+ }
+
+ public boolean requestFocusInWindow() {
+ boolean res = super.requestFocusInWindow();
+ if(res && null!=newtChild) {
+ newtChild.setFocusAction(null);
+ newtChild.requestFocus();
+ newtChild.setFocusAction(focusAction);
+ }
+ return res;
+ }
+
+ public boolean requestFocusInWindow(boolean temporary) {
+ boolean res = super.requestFocusInWindow(temporary);
+ if(res && null!=newtChild) {
+ newtChild.setFocusAction(null);
+ newtChild.requestFocus();
+ newtChild.setFocusAction(focusAction);
+ }
+ return res;
+ }
// Disables the AWT's erasing of this Canvas's background on Windows
// in Java SE 6. This internal API is not available in previous
diff --git a/src/newt/classes/com/jogamp/newt/event/NEWTEvent.java b/src/newt/classes/com/jogamp/newt/event/NEWTEvent.java
index 2cb2c5177..9afcb840c 100644
--- a/src/newt/classes/com/jogamp/newt/event/NEWTEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/NEWTEvent.java
@@ -57,9 +57,6 @@ public class NEWTEvent extends java.util.EventObject {
// 2: MouseEvent.java
// 3: com.jogamp.newt.Window
// 3: com.jogamp.newt.event.awt.AWTNewtEventFactory
- // 1: PaintEvent.java
- // 2: com.jogamp.newt.Window
- // 2: com.jogamp.newt.event.awt.AWTNewtEventFactory
// 1: WindowEvent.java
// 2: com.jogamp.newt.Window
// 2: com.jogamp.newt.event.awt.AWTNewtEventFactory
@@ -80,8 +77,7 @@ public class NEWTEvent extends java.util.EventObject {
String clazzName = null;
- if( (event instanceof com.jogamp.newt.event.WindowEvent) ||
- (event instanceof com.jogamp.newt.event.PaintEvent) ) {
+ if( event instanceof com.jogamp.newt.event.WindowEvent ) {
if ( stack.length > 2 ) {
clazzName = stack[2].getClassName();
}
@@ -127,7 +123,7 @@ public class NEWTEvent extends java.util.EventObject {
/**
* Attach the passed object to this event.<br>
- * If an object was previously attached, it will replaced.<br>
+ * If an object was previously attached, it will be replaced.<br>
* Attachments to NEWT events allow users to pass on information
* from one custom listener to another, ie custom listener to listener
* communication.
diff --git a/src/newt/classes/com/jogamp/newt/event/PaintListener.java b/src/newt/classes/com/jogamp/newt/event/NEWTEventConsumer.java
index f64ae0069..e37c820a1 100755..100644
--- a/src/newt/classes/com/jogamp/newt/event/PaintListener.java
+++ b/src/newt/classes/com/jogamp/newt/event/NEWTEventConsumer.java
@@ -1,21 +1,21 @@
/*
- * Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
- *
+ * Copyright (c) 2010 Sven Gothel. 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
+ *
+ * Neither the name Sven Gothel 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
@@ -27,18 +27,17 @@
* 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.
- *
+ * SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-
package com.jogamp.newt.event;
-import com.jogamp.newt.*;
+public interface NEWTEventConsumer {
-/**
- *
- * @author tdv
- */
-public interface PaintListener {
- public void exposed(PaintEvent e);
+ /**
+ * Consume the event
+ *
+ * @return true if the event can be consumed now,
+ * otherwise propagate it later.
+ */
+ public boolean consumeEvent(NEWTEvent event);
}
diff --git a/src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java b/src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java
index 5a93bca36..fb9e1877a 100644
--- a/src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/TraceWindowAdapter.java
@@ -65,4 +65,8 @@ public class TraceWindowAdapter implements WindowListener {
System.out.println(e);
if(null!=downstream) { downstream.windowLostFocus(e); }
}
+ public void windowRepaint(WindowUpdateEvent e) {
+ System.out.println(e);
+ if(null!=downstream) { downstream.windowRepaint(e); }
+ }
}
diff --git a/src/newt/classes/com/jogamp/newt/event/WindowAdapter.java b/src/newt/classes/com/jogamp/newt/event/WindowAdapter.java
index 51732789e..587622a81 100644
--- a/src/newt/classes/com/jogamp/newt/event/WindowAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/WindowAdapter.java
@@ -45,4 +45,6 @@ public abstract class WindowAdapter implements WindowListener
}
public void windowLostFocus(WindowEvent e) {
}
+ public void windowRepaint(WindowUpdateEvent e) {
+ }
}
diff --git a/src/newt/classes/com/jogamp/newt/event/WindowEvent.java b/src/newt/classes/com/jogamp/newt/event/WindowEvent.java
index e542c467f..5221b3664 100644
--- a/src/newt/classes/com/jogamp/newt/event/WindowEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/WindowEvent.java
@@ -46,7 +46,7 @@ public class WindowEvent extends NEWTEvent {
public static final int EVENT_WINDOW_DESTROY_NOTIFY = 102;
public static final int EVENT_WINDOW_GAINED_FOCUS = 103;
public static final int EVENT_WINDOW_LOST_FOCUS = 104;
- // public static final int EVENT_WINDOW_REPAINT = 105; // TODO
+ public static final int EVENT_WINDOW_REPAINT = 105;
public WindowEvent(int eventType, Object source, long when) {
super(eventType, source, when);
@@ -59,7 +59,7 @@ public class WindowEvent extends NEWTEvent {
case EVENT_WINDOW_DESTROY_NOTIFY: return "EVENT_WINDOW_DESTROY_NOTIFY";
case EVENT_WINDOW_GAINED_FOCUS: return "EVENT_WINDOW_GAINED_FOCUS";
case EVENT_WINDOW_LOST_FOCUS: return "EVENT_WINDOW_LOST_FOCUS";
- // case EVENT_WINDOW_REPAINT: return "EVENT_WINDOW_REPAINT";
+ case EVENT_WINDOW_REPAINT: return "EVENT_WINDOW_REPAINT";
default: return "unknown (" + type + ")";
}
}
diff --git a/src/newt/classes/com/jogamp/newt/event/WindowListener.java b/src/newt/classes/com/jogamp/newt/event/WindowListener.java
index 871f0fe12..1a10131f7 100644
--- a/src/newt/classes/com/jogamp/newt/event/WindowListener.java
+++ b/src/newt/classes/com/jogamp/newt/event/WindowListener.java
@@ -41,4 +41,5 @@ public interface WindowListener extends NEWTEventListener {
public void windowDestroyNotify(WindowEvent e);
public void windowGainedFocus(WindowEvent e);
public void windowLostFocus(WindowEvent e);
+ public void windowRepaint(WindowUpdateEvent e);
}
diff --git a/src/newt/classes/com/jogamp/newt/event/PaintEvent.java b/src/newt/classes/com/jogamp/newt/event/WindowUpdateEvent.java
index e1c667b55..5a11f0f77 100755..100644
--- a/src/newt/classes/com/jogamp/newt/event/PaintEvent.java
+++ b/src/newt/classes/com/jogamp/newt/event/WindowUpdateEvent.java
@@ -1,21 +1,21 @@
/*
- * Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
- *
+ * Copyright (c) 2010 Sven Gothel. 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
+ *
+ * Neither the name Sven Gothel 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
@@ -27,50 +27,27 @@
* 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.
- *
+ * SVEN GOTHEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-
package com.jogamp.newt.event;
import com.jogamp.newt.*;
+import com.jogamp.nativewindow.util.Rectangle;
-/**
- *
- * @author tdv
- */
-public class PaintEvent extends NEWTEvent {
+public class WindowUpdateEvent extends WindowEvent {
+ Rectangle bounds;
- // bounds of the damage region
- private int x, y, width, height;
- public PaintEvent(int eventType, Object source,
- long when, int x, int y, int w, int h)
+ public WindowUpdateEvent(int eventType, Object source, long when, Rectangle bounds)
{
super(eventType, source, when);
- this.x = x;
- this.y = y;
- this.width = w;
- this.height = h;
+ this.bounds = bounds;
}
- public int getHeight() {
- return height;
- }
-
- public int getWidth() {
- return width;
- }
-
- public int getX() {
- return x;
- }
-
- public int getY() {
- return y;
+ public Rectangle getBounds() {
+ return bounds;
}
public String toString() {
- return "ExposeEvent[modifiers: x="+x+" y="+y+" w="+width+" h="+height +"]";
+ return "WindowUpdateEvent["+super.toString()+", "+bounds+"]";
}
-
}
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java
index e8497a741..b9d1f8678 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java
@@ -165,16 +165,8 @@ public abstract class AWTAdapter implements java.util.EventListener
/** @see #addTo(java.awt.Component) */
public abstract AWTAdapter removeFrom(java.awt.Component awtComponent);
- void enqueueEvent(com.jogamp.newt.event.NEWTEvent event) {
- enqueueEvent(false, event);
- }
-
void enqueueEvent(boolean wait, com.jogamp.newt.event.NEWTEvent event) {
- try {
- newtWindow.getScreen().getDisplay().enqueueEvent(wait, event);
- } catch (NullPointerException npe) {
- /* that's ok .. window might be down already */
- }
+ newtWindow.enqueueEvent(wait, event);
}
}
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java
index d2b733f98..7e3e5f1b1 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTKeyAdapter.java
@@ -60,7 +60,7 @@ public class AWTKeyAdapter extends AWTAdapter implements java.awt.event.KeyListe
if(null!=newtListener) {
((com.jogamp.newt.event.KeyListener)newtListener).keyPressed(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -69,7 +69,7 @@ public class AWTKeyAdapter extends AWTAdapter implements java.awt.event.KeyListe
if(null!=newtListener) {
((com.jogamp.newt.event.KeyListener)newtListener).keyReleased(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -78,7 +78,7 @@ public class AWTKeyAdapter extends AWTAdapter implements java.awt.event.KeyListe
if(null!=newtListener) {
((com.jogamp.newt.event.KeyListener)newtListener).keyTyped(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
}
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java
index 058a5f250..3f774f193 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTMouseAdapter.java
@@ -62,7 +62,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
if(null!=newtListener) {
((com.jogamp.newt.event.MouseListener)newtListener).mouseClicked(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -71,7 +71,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
if(null!=newtListener) {
((com.jogamp.newt.event.MouseListener)newtListener).mouseEntered(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -80,7 +80,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
if(null!=newtListener) {
((com.jogamp.newt.event.MouseListener)newtListener).mouseExited(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -89,7 +89,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
if(null!=newtListener) {
((com.jogamp.newt.event.MouseListener)newtListener).mousePressed(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -98,7 +98,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
if(null!=newtListener) {
((com.jogamp.newt.event.MouseListener)newtListener).mouseReleased(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -107,7 +107,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
if(null!=newtListener) {
((com.jogamp.newt.event.MouseListener)newtListener).mouseDragged(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -116,7 +116,7 @@ public class AWTMouseAdapter extends AWTAdapter implements java.awt.event.MouseL
if(null!=newtListener) {
((com.jogamp.newt.event.MouseListener)newtListener).mouseMoved(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
}
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTNewtEventFactory.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTNewtEventFactory.java
index e4e97946a..076165c73 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTNewtEventFactory.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTNewtEventFactory.java
@@ -48,8 +48,10 @@ class AWTNewtEventFactory {
// n/a map.put(java.awt.event.WindowEvent.WINDOW_DEICONIFIED, com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_DEICONIFIED);
map.put(java.awt.event.WindowEvent.WINDOW_ACTIVATED, com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_GAINED_FOCUS);
map.put(java.awt.event.WindowEvent.WINDOW_GAINED_FOCUS, com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_GAINED_FOCUS);
+ map.put(java.awt.event.FocusEvent.FOCUS_GAINED, com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_GAINED_FOCUS);
map.put(java.awt.event.WindowEvent.WINDOW_DEACTIVATED, com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_LOST_FOCUS);
map.put(java.awt.event.WindowEvent.WINDOW_LOST_FOCUS, com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_LOST_FOCUS);
+ map.put(java.awt.event.FocusEvent.FOCUS_LOST, com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_LOST_FOCUS);
// n/a map.put(java.awt.event.WindowEvent.WINDOW_STATE_CHANGED, com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_STATE_CHANGED);
map.put(java.awt.event.ComponentEvent.COMPONENT_MOVED, com.jogamp.newt.event.WindowEvent.EVENT_WINDOW_MOVED);
@@ -108,6 +110,14 @@ class AWTNewtEventFactory {
return null; // no mapping ..
}
+ static final com.jogamp.newt.event.WindowEvent createWindowEvent(java.awt.event.FocusEvent event, com.jogamp.newt.Window newtSource) {
+ int type = eventTypeAWT2NEWT.get(event.getID());
+ if(-1 < type) {
+ return new com.jogamp.newt.event.WindowEvent(type, (null==newtSource)?(Object)event.getComponent():(Object)newtSource, System.currentTimeMillis());
+ }
+ return null; // no mapping ..
+ }
+
static final com.jogamp.newt.event.MouseEvent createMouseEvent(java.awt.event.MouseEvent event, com.jogamp.newt.Window newtSource) {
int type = eventTypeAWT2NEWT.get(event.getID());
if(-1 < type) {
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTParentWindowAdapter.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTParentWindowAdapter.java
index 7905a728c..9f0944ea0 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTParentWindowAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTParentWindowAdapter.java
@@ -53,6 +53,18 @@ public class AWTParentWindowAdapter
return super.removeFrom(awtComponent);
}
+ public void focusGained(java.awt.event.FocusEvent e) {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("AWT: focusGained: START "+ e.getComponent());
+ }
+ }
+
+ public void focusLost(java.awt.event.FocusEvent e) {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("AWT: focusLost: "+ e.getComponent());
+ }
+ }
+
public void componentResized(java.awt.event.ComponentEvent e) {
// Need to resize the NEWT child window
// the resized event will be send via the native window feedback.
diff --git a/src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java b/src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java
index ee7ca97ad..875401544 100644
--- a/src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java
+++ b/src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java
@@ -33,7 +33,7 @@ package com.jogamp.newt.event.awt;
public class AWTWindowAdapter
extends AWTAdapter
- implements java.awt.event.ComponentListener, java.awt.event.WindowListener
+ implements java.awt.event.ComponentListener, java.awt.event.WindowListener, java.awt.event.FocusListener
{
WindowClosingListener windowClosingListener;
@@ -52,6 +52,7 @@ public class AWTWindowAdapter
public AWTAdapter addTo(java.awt.Component awtComponent) {
java.awt.Window win = getWindow(awtComponent);
awtComponent.addComponentListener(this);
+ awtComponent.addFocusListener(this);
if( null == windowClosingListener ) {
windowClosingListener = new WindowClosingListener();
}
@@ -65,6 +66,7 @@ public class AWTWindowAdapter
}
public AWTAdapter removeFrom(java.awt.Component awtComponent) {
+ awtComponent.removeFocusListener(this);
awtComponent.removeComponentListener(this);
java.awt.Window win = getWindow(awtComponent);
if( null != win && null != windowClosingListener ) {
@@ -86,12 +88,30 @@ public class AWTWindowAdapter
return null;
}
+ public void focusGained(java.awt.event.FocusEvent e) {
+ com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
+ if(null!=newtListener) {
+ ((com.jogamp.newt.event.WindowListener)newtListener).windowGainedFocus(event);
+ } else {
+ enqueueEvent(false, event);
+ }
+ }
+
+ public void focusLost(java.awt.event.FocusEvent e) {
+ com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
+ if(null!=newtListener) {
+ ((com.jogamp.newt.event.WindowListener)newtListener).windowLostFocus(event);
+ } else {
+ enqueueEvent(false, event);
+ }
+ }
+
public void componentResized(java.awt.event.ComponentEvent e) {
com.jogamp.newt.event.WindowEvent event = AWTNewtEventFactory.createWindowEvent(e, newtWindow);
if(null!=newtListener) {
((com.jogamp.newt.event.WindowListener)newtListener).windowResized(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -100,7 +120,7 @@ public class AWTWindowAdapter
if(null!=newtListener) {
((com.jogamp.newt.event.WindowListener)newtListener).windowMoved(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -143,7 +163,7 @@ public class AWTWindowAdapter
if(null!=newtListener) {
((com.jogamp.newt.event.WindowListener)newtListener).windowGainedFocus(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
@@ -156,7 +176,7 @@ public class AWTWindowAdapter
if(null!=newtListener) {
((com.jogamp.newt.event.WindowListener)newtListener).windowLostFocus(event);
} else {
- enqueueEvent(event);
+ enqueueEvent(false, event);
}
}
diff --git a/src/newt/classes/com/jogamp/newt/impl/awt/AWTWindow.java b/src/newt/classes/com/jogamp/newt/impl/awt/AWTWindow.java
index a06b7160c..56e5a4240 100644
--- a/src/newt/classes/com/jogamp/newt/impl/awt/AWTWindow.java
+++ b/src/newt/classes/com/jogamp/newt/impl/awt/AWTWindow.java
@@ -215,7 +215,7 @@ public class AWTWindow extends Window {
}
}
- public com.jogamp.newt.Insets getInsets() {
+ public com.jogamp.newt.util.Insets getInsets() {
final int insets[] = new int[] { 0, 0, 0, 0 };
runOnEDT(true, new Runnable() {
public void run() {
@@ -226,7 +226,7 @@ public class AWTWindow extends Window {
insets[3] = contInsets.right;
}
});
- return new com.jogamp.newt.
+ return new com.jogamp.newt.util.
Insets(insets[0],insets[1],insets[2],insets[3]);
}
@@ -240,7 +240,7 @@ public class AWTWindow extends Window {
}
}
- protected boolean setFullscreenImpl(final boolean fullscreen, final int x, final int y, final int w, final int h) {
+ protected void setFullscreenImpl(final boolean fullscreen, final int x, final int y, final int w, final int h) {
/** An AWT event on setSize() would bring us in a deadlock situation, hence invokeLater() */
runOnEDT(false, new Runnable() {
public void run() {
@@ -257,26 +257,12 @@ public class AWTWindow extends Window {
container.setSize(w, h);
}
});
- return fullscreen;
}
public Object getWrappedWindow() {
return canvas;
}
- protected void enqueueWindowEvent(int eventType) {
- super.enqueueWindowEvent(eventType);
- }
-
- protected void enqueueKeyEvent(int eventType, int modifiers, int keyCode, char keyChar) {
- super.enqueueKeyEvent(eventType, modifiers, keyCode, keyChar);
- }
-
- protected void enqueueMouseEvent(int eventType, int modifiers,
- int x, int y, int button, int rotation) {
- super.enqueueMouseEvent(eventType, modifiers, x, y, button, rotation);
- }
-
private void runOnEDT(boolean wait, Runnable r) {
EDTUtil edtUtil = screen.getDisplay().getEDTUtil();
if ( ( null != edtUtil && edtUtil.isCurrentThreadEDT() ) || EventQueue.isDispatchThread() ) {
diff --git a/src/newt/classes/com/jogamp/newt/impl/intel/gdl/Window.java b/src/newt/classes/com/jogamp/newt/impl/intel/gdl/Window.java
index 1b8a62a9c..14621807a 100644
--- a/src/newt/classes/com/jogamp/newt/impl/intel/gdl/Window.java
+++ b/src/newt/classes/com/jogamp/newt/impl/intel/gdl/Window.java
@@ -109,11 +109,10 @@ public class Window extends com.jogamp.newt.Window {
}
}
- protected boolean setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
+ protected void setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
if(0!=surfaceHandle) {
SetBounds0(surfaceHandle, screen.getWidth(), screen.getHeight(), x, y, w, h);
}
- return fullscreen;
}
protected void requestFocusImpl() {
diff --git a/src/newt/classes/com/jogamp/newt/impl/macosx/MacDisplay.java b/src/newt/classes/com/jogamp/newt/impl/macosx/MacDisplay.java
index 0fde19cd4..699b675dd 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/macosx/MacDisplay.java
+++ b/src/newt/classes/com/jogamp/newt/impl/macosx/MacDisplay.java
@@ -99,17 +99,15 @@ public class MacDisplay extends Display {
if(wait) {
ReflectionUtil.callStaticMethod(
"java.awt.EventQueue",
- cl,
"invokeAndWait",
new Class[] { java.lang.Runnable.class },
- new Object[] { r } );
+ new Object[] { r }, cl );
} else {
ReflectionUtil.callStaticMethod(
"java.awt.EventQueue",
- cl,
"invokeLater",
new Class[] { java.lang.Runnable.class },
- new Object[] { r } );
+ new Object[] { r }, cl );
}
} catch (Exception e) {
throw new NativeWindowException(e);
diff --git a/src/newt/classes/com/jogamp/newt/impl/macosx/MacScreen.java b/src/newt/classes/com/jogamp/newt/impl/macosx/MacScreen.java
index d7deb13ee..d7deb13ee 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/macosx/MacScreen.java
+++ b/src/newt/classes/com/jogamp/newt/impl/macosx/MacScreen.java
diff --git a/src/newt/classes/com/jogamp/newt/impl/macosx/MacWindow.java b/src/newt/classes/com/jogamp/newt/impl/macosx/MacWindow.java
index 8a656a5a8..8f5041253 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/macosx/MacWindow.java
+++ b/src/newt/classes/com/jogamp/newt/impl/macosx/MacWindow.java
@@ -39,6 +39,7 @@ import com.jogamp.nativewindow.impl.RecursiveToolkitLock;
import com.jogamp.newt.*;
import com.jogamp.newt.event.*;
import com.jogamp.newt.impl.*;
+import com.jogamp.newt.util.*;
public class MacWindow extends Window {
@@ -279,7 +280,7 @@ public class MacWindow extends Window {
}
}
- protected boolean setFullscreenImpl(final boolean fullscreen, final int x, final int y, final int w, final int h) {
+ protected void setFullscreenImpl(final boolean fullscreen, final int x, final int y, final int w, final int h) {
nsViewLock.lock();
try {
if(DEBUG_IMPLEMENTATION || DEBUG_WINDOW_EVENT) {
@@ -292,27 +293,8 @@ public class MacWindow extends Window {
} finally {
nsViewLock.unlock();
}
- return fullscreen;
}
- private void sizeChanged(int newWidth, int newHeight) {
- if(width != newWidth || height != newHeight) {
- if (DEBUG_IMPLEMENTATION) {
- System.out.println(Thread.currentThread().getName()+" Size changed to " + newWidth + ", " + newHeight);
- }
- width = newWidth;
- height = newHeight;
- if(!fullscreen) {
- nfs_width=width;
- nfs_height=height;
- }
- if (DEBUG_IMPLEMENTATION) {
- System.out.println(" Posted WINDOW_RESIZED event");
- }
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED);
- }
- }
-
private void insetsChanged(int left, int top, int right, int bottom) {
if (DEBUG_IMPLEMENTATION) {
System.out.println(Thread.currentThread().getName()+
@@ -326,32 +308,6 @@ public class MacWindow extends Window {
}
}
- private void positionChanged(int newX, int newY) {
- if( 0==parentWindowHandle && ( x != newX || y != newY ) ) {
- if (DEBUG_IMPLEMENTATION) {
- System.out.println(Thread.currentThread().getName()+" Position changed to " + newX + ", " + newY);
- }
- x = newX;
- y = newY;
- if(!fullscreen) {
- nfs_x=x;
- nfs_y=y;
- }
- if (DEBUG_IMPLEMENTATION) {
- System.out.println(" Posted WINDOW_MOVED event");
- }
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_MOVED);
- }
- }
-
- private void focusChanged(boolean focusGained) {
- if (focusGained) {
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_GAINED_FOCUS);
- } else {
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_LOST_FOCUS);
- }
- }
-
private char convertKeyChar(char keyChar) {
if (keyChar == '\r') {
// Turn these into \n
@@ -435,12 +391,12 @@ public class MacWindow extends Window {
return keyChar;
}
- protected void enqueueKeyEvent(int eventType, int modifiers, int keyCode, char keyChar) {
+ public void enqueueKeyEvent(boolean wait, int eventType, int modifiers, int keyCode, char keyChar) {
int key = convertKeyChar(keyChar);
if(DEBUG_IMPLEMENTATION) System.out.println("MacWindow.enqueueKeyEvent "+Thread.currentThread().getName());
// Note that we send the key char for the key code on this
// platform -- we do not get any useful key codes out of the system
- super.enqueueKeyEvent(eventType, modifiers, key, keyChar);
+ super.enqueueKeyEvent(wait, eventType, modifiers, key, keyChar);
}
private void createWindow(final boolean recreate, final int x, final int y, final int width, final int height, final boolean fullscreen) {
@@ -482,9 +438,9 @@ public class MacWindow extends Window {
ie.printStackTrace();
}
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_MOVED);
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED);
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_GAINED_FOCUS);
+ enqueueWindowEvent(false, WindowEvent.EVENT_WINDOW_MOVED);
+ enqueueWindowEvent(false, WindowEvent.EVENT_WINDOW_RESIZED);
+ enqueueWindowEvent(false, WindowEvent.EVENT_WINDOW_GAINED_FOCUS);
}
protected static native boolean initIDs0();
diff --git a/src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Screen.java b/src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Screen.java
index e30896468..e30896468 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Screen.java
+++ b/src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Screen.java
diff --git a/src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Window.java b/src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Window.java
index 7d3a0ac8c..ca06699f5 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Window.java
+++ b/src/newt/classes/com/jogamp/newt/impl/opengl/broadcom/egl/Window.java
@@ -87,10 +87,9 @@ public class Window extends com.jogamp.newt.Window {
System.err.println("BCEGL Window.setPositionImpl n/a in BroadcomEGL");
}
- protected boolean setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
+ protected void setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
// n/a in BroadcomEGL
System.err.println("setFullscreen n/a in BroadcomEGL");
- return false;
}
public boolean surfaceSwap() {
diff --git a/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDDisplay.java b/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDDisplay.java
index 2ab30773f..2ab30773f 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDDisplay.java
+++ b/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDDisplay.java
diff --git a/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDScreen.java b/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDScreen.java
index d570d9f5b..d570d9f5b 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDScreen.java
+++ b/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDScreen.java
diff --git a/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDWindow.java b/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDWindow.java
index 0d12a4a0a..2f534548b 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDWindow.java
+++ b/src/newt/classes/com/jogamp/newt/impl/opengl/kd/KDWindow.java
@@ -100,14 +100,13 @@ public class KDWindow extends Window {
System.err.println("setPosition n/a in KD");
}
- protected boolean setFullscreenImpl(final boolean fullscreen, final int x, final int y, final int w, final int h) {
+ protected void setFullscreenImpl(final boolean fullscreen, final int x, final int y, final int w, final int h) {
if(0!=eglWindowHandle) {
setFullScreen0(eglWindowHandle, fullscreen);
if(!fullscreen) {
setSize0(eglWindowHandle, w, h);
}
}
- return true;
}
//----------------------------------------------------------------------
@@ -126,16 +125,11 @@ public class KDWindow extends Window {
windowUserData=userData;
}
- private void sizeChanged(int newWidth, int newHeight) {
- width = newWidth;
- height = newHeight;
- if(!fullscreen) {
- nfs_width=width;
- nfs_height=height;
- } else {
+ protected void sizeChanged(int newWidth, int newHeight) {
+ if(fullscreen) {
((KDScreen)screen).setScreenSize(width, height);
}
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED);
+ super.sizeChanged(newWidth, newHeight);
}
private long eglWindowHandle;
diff --git a/src/newt/classes/com/jogamp/newt/impl/windows/WindowsDisplay.java b/src/newt/classes/com/jogamp/newt/impl/windows/WindowsDisplay.java
index ef033d1c8..ef033d1c8 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/windows/WindowsDisplay.java
+++ b/src/newt/classes/com/jogamp/newt/impl/windows/WindowsDisplay.java
diff --git a/src/newt/classes/com/jogamp/newt/impl/windows/WindowsScreen.java b/src/newt/classes/com/jogamp/newt/impl/windows/WindowsScreen.java
index 1b4be0d55..1b4be0d55 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/windows/WindowsScreen.java
+++ b/src/newt/classes/com/jogamp/newt/impl/windows/WindowsScreen.java
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 aedb4ed7d..69cd62201 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/windows/WindowsWindow.java
+++ b/src/newt/classes/com/jogamp/newt/impl/windows/WindowsWindow.java
@@ -36,6 +36,7 @@ package com.jogamp.newt.impl.windows;
import javax.media.nativewindow.*;
import com.jogamp.newt.*;
import com.jogamp.newt.event.*;
+import com.jogamp.newt.util.*;
public class WindowsWindow extends Window {
@@ -161,9 +162,8 @@ public class WindowsWindow extends Window {
setPosition0(parentWindowHandle, windowHandle, x , y /*, width, height*/);
}
- protected boolean setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
+ protected void setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
setFullscreen0(fullscreen?0:parentWindowHandle, windowHandle, x, y, w, h, isUndecorated(fullscreen));
- return fullscreen;
}
protected boolean reparentWindowImpl() {
@@ -175,7 +175,7 @@ public class WindowsWindow extends Window {
protected void requestFocusImpl() {
if (windowHandle != 0L) {
- requestFocus0(fullscreen?0:parentWindowHandle, windowHandle);
+ requestFocus0(windowHandle);
}
}
@@ -206,7 +206,7 @@ public class WindowsWindow extends Window {
private native void setFullscreen0(long parentWindowHandle, long windowHandle, int x, int y, int width, int height, boolean isUndecorated);
private native void reparentWindow0(long parentWindowHandle, long windowHandle, int x, int y, int width, int height, boolean isUndecorated);
private static native void setTitle0(long windowHandle, String title);
- private static native void requestFocus0(long parentWindowHandle, long windowHandle);
+ private native void requestFocus0(long windowHandle);
private void insetsChanged(int left, int top, int right, int bottom) {
if (left != -1 && top != -1 && right != -1 && bottom != -1) {
@@ -216,42 +216,4 @@ public class WindowsWindow extends Window {
insets.bottom = bottom;
}
}
-
- private void sizeChanged(int newWidth, int newHeight) {
- if(width != newWidth || height != newHeight) {
- width = newWidth;
- height = newHeight;
- if(!fullscreen) {
- nfs_width=width;
- nfs_height=height;
- }
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED);
- }
- }
-
- private void positionChanged(int newX, int newY) {
- if( 0==parentWindowHandle && ( x != newX || y != newY ) ) {
- x = newX;
- y = newY;
- if(!fullscreen) {
- nfs_x=x;
- nfs_y=y;
- }
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_MOVED);
- }
- }
-
- /**
- *
- * @param focusOwner if focusGained is true, focusOwner is the previous
- * focus owner, if focusGained is false, focusOwner is the new focus owner
- * @param focusGained
- */
- private void focusChanged(long focusOwner, boolean focusGained) {
- if (focusGained) {
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_GAINED_FOCUS);
- } else {
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_LOST_FOCUS);
- }
- }
}
diff --git a/src/newt/classes/com/jogamp/newt/impl/x11/X11Display.java b/src/newt/classes/com/jogamp/newt/impl/x11/X11Display.java
index 6701d6c8e..6701d6c8e 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/x11/X11Display.java
+++ b/src/newt/classes/com/jogamp/newt/impl/x11/X11Display.java
diff --git a/src/newt/classes/com/jogamp/newt/impl/x11/X11Screen.java b/src/newt/classes/com/jogamp/newt/impl/x11/X11Screen.java
index 453d8e5e1..453d8e5e1 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/x11/X11Screen.java
+++ b/src/newt/classes/com/jogamp/newt/impl/x11/X11Screen.java
diff --git a/src/newt/classes/com/jogamp/newt/impl/x11/X11Window.java b/src/newt/classes/com/jogamp/newt/impl/x11/X11Window.java
index e7fc96019..7a770f770 100755..100644
--- a/src/newt/classes/com/jogamp/newt/impl/x11/X11Window.java
+++ b/src/newt/classes/com/jogamp/newt/impl/x11/X11Window.java
@@ -71,7 +71,8 @@ public class X11Window extends Window {
if(0!=windowHandleClose && null!=getScreen() ) {
X11Display display = (X11Display) getScreen().getDisplay();
try {
- CloseWindow0(display.getHandle(), windowHandleClose, display.getJavaObjectAtom());
+ CloseWindow0(display.getHandle(), windowHandleClose,
+ display.getJavaObjectAtom(), display.getWindowDeleteAtom());
} catch (Throwable t) {
if(DEBUG_IMPLEMENTATION) {
Exception e = new Exception("closeNative failed - "+Thread.currentThread().getName(), t);
@@ -101,10 +102,9 @@ public class X11Window extends Window {
setPosition0(parentWindowHandle, getDisplayHandle(), windowHandle, x, y);
}
- protected boolean setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
+ protected void setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
setPosSizeDecor0(fullscreen?0:parentWindowHandle, getDisplayHandle(), getScreenIndex(), windowHandle,
x, y, w, h, isUndecorated(fullscreen), isVisible());
- return fullscreen;
}
protected boolean reparentWindowImpl() {
@@ -134,7 +134,7 @@ public class X11Window extends Window {
private native long CreateWindow0(long parentWindowHandle, long display, int screen_index,
long visualID, long javaObjectAtom, long windowDeleteAtom,
int x, int y, int width, int height, boolean undecorated);
- private native void CloseWindow0(long display, long windowHandle, long javaObjectAtom);
+ private native void CloseWindow0(long display, long windowHandle, long javaObjectAtom, long windowDeleteAtom);
private native void setVisible0(long display, long windowHandle, boolean visible);
private native void setSize0(long display, long windowHandle, int width, int height);
private native void setPosSizeDecor0(long parentWindowHandle, long display, int screen_index, long windowHandle,
@@ -145,51 +145,6 @@ public class X11Window extends Window {
private native void reparentWindow0(long parentWindowHandle, long display, int screen_index, long windowHandle,
int x, int y, boolean undecorated, boolean isVisible);
- private void windowChanged(int newX, int newY, int newWidth, int newHeight) {
- if(width != newWidth || height != newHeight) {
- if(DEBUG_IMPLEMENTATION) {
- System.err.println("X11Window windowChanged size: "+this.width+"x"+this.height+" -> "+newWidth+"x"+newHeight);
- }
- width = newWidth;
- height = newHeight;
- if(!fullscreen) {
- nfs_width=width;
- nfs_height=height;
- }
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED);
- }
- if( 0==parentWindowHandle && ( x != newX || y != newY ) ) {
- if(DEBUG_IMPLEMENTATION) {
- System.err.println("X11Window windowChanged position: "+this.x+"/"+this.y+" -> "+newX+"x"+newY);
- }
- x = newX;
- y = newY;
- if(!fullscreen) {
- nfs_x=x;
- nfs_y=y;
- }
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_MOVED);
- }
- }
-
- /**
- * @param focusGained
- */
- private void focusChanged(boolean focusGained) {
- if (focusGained) {
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_GAINED_FOCUS);
- } else {
- enqueueWindowEvent(WindowEvent.EVENT_WINDOW_LOST_FOCUS);
- }
- }
-
- /**
- * @param focusGained
- */
- private void visibleChanged(boolean visible) {
- // FIXME .. this.visible = visible ;
- }
-
private void windowCreated(long windowHandle) {
this.windowHandle = windowHandle;
}
diff --git a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java
index 0e93fc0bd..99b4314a3 100644
--- a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java
+++ b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java
@@ -35,6 +35,7 @@ package com.jogamp.newt.opengl;
import com.jogamp.newt.*;
import com.jogamp.newt.event.*;
+import com.jogamp.newt.util.*;
import com.jogamp.nativewindow.impl.RecursiveToolkitLock;
import javax.media.nativewindow.*;
import javax.media.opengl.*;
@@ -55,22 +56,34 @@ import java.util.*;
*/
public class GLWindow extends Window implements GLAutoDrawable {
private Window window;
- private boolean runPumpMessages;
/**
* Constructor. Do not call this directly -- use {@link #create()} instead.
*/
protected GLWindow(Window window) {
+ this.startTime = System.currentTimeMillis();
this.window = window;
this.window.setHandleDestroyNotify(false);
- this.runPumpMessages = ( null == getScreen().getDisplay().getEDTUtil() ) ;
window.addWindowListener(new WindowAdapter() {
+ public void windowRepaint(WindowUpdateEvent e) {
+ if( !windowIsLocked() && null == getAnimator() ) {
+ display();
+ }
+ }
+
public void windowResized(WindowEvent e) {
sendReshape = true;
+ if( !windowIsLocked() && null == getAnimator() ) {
+ display();
+ }
}
public void windowDestroyNotify(WindowEvent e) {
- sendDestroy = true;
+ if( !windowIsLocked() && null == getAnimator() ) {
+ destroy();
+ } else {
+ sendDestroy = true;
+ }
}
});
}
@@ -128,31 +141,6 @@ public class GLWindow extends Window implements GLAutoDrawable {
return window.getWrappedWindow();
}
- /**
- * EXPERIMENTAL<br>
- * Enable or disables running the {@link Display#pumpMessages} in the {@link #display()} call.<br>
- * The default behavior is to run {@link Display#pumpMessages}.<P>
- *
- * The idea was that in a single threaded environment with one {@link Display} and many {@link Window}'s,
- * a performance benefit was expected while disabling the implicit {@link Display#pumpMessages} and
- * do it once via {@link GLWindow#runCurrentThreadPumpMessage()} <br>
- * This could not have been verified. No measurable difference could have been recognized.<P>
- *
- * Best performance has been achieved with one GLWindow per thread.<br>
- *
- * Enabling local pump messages while using the EDT,
- * {@link com.jogamp.newt.NewtFactory#setUseEDT(boolean)},
- * will result in an exception.
- *
- * @deprecated EXPERIMENTAL, semantic is about to be removed after further verification.
- */
- public void setRunPumpMessages(boolean onoff) {
- if( onoff && null!=getScreen().getDisplay().getEDTUtil() ) {
- throw new GLException("GLWindow.setRunPumpMessages(true) - Can't do with EDT on");
- }
- runPumpMessages = onoff;
- }
-
protected void createNativeImpl() {
shouldNotCallThis();
}
@@ -178,7 +166,7 @@ public class GLWindow extends Window implements GLAutoDrawable {
// Lock: Have to cover whole workflow (dispose all, context, drawable and window)
windowLock();
try {
- if(null==window || window.isDestroyed()) {
+ if( isDestroyed() ) {
return; // nop
}
if(Window.DEBUG_WINDOW_EVENT || window.DEBUG_IMPLEMENTATION) {
@@ -186,21 +174,20 @@ public class GLWindow extends Window implements GLAutoDrawable {
e1.printStackTrace();
}
- if ( null != context && context.isCreated() && null != drawable && drawable.isRealized() ) {
- // Catch dispose GLExceptions by GLEventListener, just 'print' them
- // so we can continue with the destruction.
- try {
- helper.invokeGL(drawable, context, disposeAction, null);
- } catch (GLException gle) {
- gle.printStackTrace();
+ if( window.isNativeWindowValid() && null != drawable && drawable.isRealized() ) {
+ if( null != context && context.isCreated() ) {
+ // Catch dispose GLExceptions by GLEventListener, just 'print' them
+ // so we can continue with the destruction.
+ try {
+ helper.invokeGL(drawable, context, disposeAction, null);
+ } catch (GLException gle) {
+ gle.printStackTrace();
+ }
+
+ context.destroy();
+ context = null;
}
- }
- if (context != null && null != drawable && drawable.isRealized() ) {
- context.destroy();
- context = null;
- }
- if (drawable != null) {
drawable.setRealized(false);
drawable = null;
}
@@ -228,7 +215,7 @@ public class GLWindow extends Window implements GLAutoDrawable {
* @see #destroy()
*/
public void destroy(boolean deep) {
- if(!isDestroyed()) {
+ if( !isDestroyed() ) {
runOnEDTIfAvail(true, new DestroyAction(deep));
}
}
@@ -318,6 +305,9 @@ public class GLWindow extends Window implements GLAutoDrawable {
public void requestFocus() {
window.requestFocus();
}
+ public void setFocusAction(FocusRunnable focusAction) {
+ window.setFocusAction(focusAction);
+ }
public Insets getInsets() {
return window.getInsets();
@@ -340,9 +330,8 @@ public class GLWindow extends Window implements GLAutoDrawable {
public boolean setFullscreen(boolean fullscreen) {
return window.setFullscreen(fullscreen);
}
- protected boolean setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
+ protected void setFullscreenImpl(boolean fullscreen, int x, int y, int w, int h) {
shouldNotCallThis();
- return false;
}
public boolean isVisible() {
@@ -369,8 +358,11 @@ public class GLWindow extends Window implements GLAutoDrawable {
return window.isFullscreen();
}
- public void sendEvent(NEWTEvent e) {
- window.sendEvent(e);
+ public void enqueueEvent(boolean wait, com.jogamp.newt.event.NEWTEvent event) {
+ window.enqueueEvent(wait, event);
+ }
+ public boolean consumeEvent(NEWTEvent e) {
+ return window.consumeEvent(e);
}
public void addSurfaceUpdatedListener(int index, SurfaceUpdatedListener l) {
@@ -418,6 +410,12 @@ public class GLWindow extends Window implements GLAutoDrawable {
return window.getKeyListeners();
}
+ public void sendWindowEvent(int eventType) {
+ window.sendWindowEvent(eventType);
+ }
+ public void enqueueWindowEvent(boolean wait, int eventType) {
+ window.enqueueWindowEvent(wait, eventType);
+ }
public void addWindowListener(int index, WindowListener l) {
window.addWindowListener(index, l);
}
@@ -430,6 +428,12 @@ public class GLWindow extends Window implements GLAutoDrawable {
public WindowListener[] getWindowListeners() {
return window.getWindowListeners();
}
+ public void setPropagateRepaint(boolean v) {
+ window.setPropagateRepaint(v);
+ }
+ public void windowRepaint(int x, int y, int width, int height) {
+ window.windowRepaint(x, y, width, height);
+ }
public String toString() {
return "NEWT-GLWindow[ \n\tHelper: "+helper+", \n\tDrawable: "+drawable + /** ", \n\tWindow: "+window+", \n\tFactory: "+factory+ */ "]";
@@ -487,8 +491,17 @@ public class GLWindow extends Window implements GLAutoDrawable {
helper.removeGLEventListener(listener);
}
+ public void setAnimator(Thread animator) {
+ helper.setAnimator(animator);
+ window.setPropagateRepaint(null==animator);
+ }
+
+ public Thread getAnimator() {
+ return helper.getAnimator();
+ }
+
public void invoke(boolean wait, GLRunnable glRunnable) {
- helper.invoke(wait, glRunnable);
+ helper.invoke(this, wait, glRunnable);
}
public void display() {
@@ -498,28 +511,26 @@ public class GLWindow extends Window implements GLAutoDrawable {
public void display(boolean forceReshape) {
if( null == window ) { return; }
+ if(sendDestroy || ( null!=window && window.hasDeviceChanged() && GLAutoDrawable.SCREEN_CHANGE_ACTION_ENABLED ) ) {
+ sendDestroy=false;
+ destroy();
+ return;
+ }
+
if( null == context && window.isVisible() ) {
// retry native window and drawable/context creation
setVisible(true);
}
- if( window.isNativeWindowValid() && null != context ) {
- if(runPumpMessages) {
- window.getScreen().getDisplay().pumpMessages();
+ if( window.isVisible() && window.isNativeWindowValid() && null != context ) {
+ if(forceReshape) {
+ sendReshape = true;
}
- if(sendDestroy || window.hasDeviceChanged() && GLAutoDrawable.SCREEN_CHANGE_ACTION_ENABLED) {
- destroy();
- sendDestroy=false;
- } else if ( window.isVisible() ) {
- if(forceReshape) {
- sendReshape = true;
- }
- windowLock();
- try{
- helper.invokeGL(drawable, context, displayAction, initAction);
- } finally {
- windowUnlock();
- }
+ windowLock();
+ try{
+ helper.invokeGL(drawable, context, displayAction, initAction);
+ } finally {
+ windowUnlock();
}
}
}
@@ -550,7 +561,7 @@ public class GLWindow extends Window implements GLAutoDrawable {
public void run() {
// Lock: Locked Surface/Window by MakeCurrent/Release
helper.init(GLWindow.this);
- startTime = System.currentTimeMillis();
+ startTime = System.currentTimeMillis(); // overwrite startTime to real init one
curTime = startTime;
if(perfLog) {
lastCheck = startTime;
@@ -564,10 +575,7 @@ public class GLWindow extends Window implements GLAutoDrawable {
public void run() {
// Lock: Locked Surface/Window by display _and_ MakeCurrent/Release
if (sendReshape) {
- int width = getWidth();
- int height = getHeight();
- getGL().glViewport(0, 0, width, height);
- helper.reshape(GLWindow.this, 0, 0, width, height);
+ helper.reshape(GLWindow.this, 0, 0, getWidth(), getHeight());
sendReshape = false;
}
@@ -593,8 +601,8 @@ public class GLWindow extends Window implements GLAutoDrawable {
private DisplayAction displayAction = new DisplayAction();
public long getStartTime() { return startTime; }
- public long getCurrentTime() { return curTime; }
- public long getDuration() { return curTime-startTime; }
+ public long getCurrentTime() { curTime = System.currentTimeMillis(); return curTime; }
+ public long getDuration() { return getCurrentTime()-startTime; }
public int getTotalFrames() { return totalFrames; }
private long startTime = 0;
diff --git a/src/newt/classes/com/jogamp/newt/Insets.java b/src/newt/classes/com/jogamp/newt/util/Insets.java
index e440892f0..068cc1dfb 100644
--- a/src/newt/classes/com/jogamp/newt/Insets.java
+++ b/src/newt/classes/com/jogamp/newt/util/Insets.java
@@ -30,7 +30,7 @@
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
*/
-package com.jogamp.newt;
+package com.jogamp.newt.util;
/**
* Simple class representing insets.
diff --git a/src/newt/native/BroadcomEGL.c b/src/newt/native/BroadcomEGL.c
index 7bb21cd3b..7bb21cd3b 100755..100644
--- a/src/newt/native/BroadcomEGL.c
+++ b/src/newt/native/BroadcomEGL.c
diff --git a/src/newt/native/KDWindow.c b/src/newt/native/KDWindow.c
index 82f2ba7df..82f2ba7df 100755..100644
--- a/src/newt/native/KDWindow.c
+++ b/src/newt/native/KDWindow.c
diff --git a/src/newt/native/NewtMacWindow.m b/src/newt/native/NewtMacWindow.m
index ae658b908..ae658b908 100755..100644
--- a/src/newt/native/NewtMacWindow.m
+++ b/src/newt/native/NewtMacWindow.m
diff --git a/src/newt/native/WindowsWindow.c b/src/newt/native/WindowsWindow.c
index 5e3311d3b..cda6a4086 100755..100644
--- a/src/newt/native/WindowsWindow.c
+++ b/src/newt/native/WindowsWindow.c
@@ -109,15 +109,17 @@
#define STD_PRINT(...) fprintf(stderr, __VA_ARGS__); fflush(stderr)
-static jmethodID sizeChangedID = NULL;
static jmethodID insetsChangedID = NULL;
+static jmethodID sizeChangedID = NULL;
static jmethodID positionChangedID = NULL;
static jmethodID focusChangedID = NULL;
+static jmethodID visibleChangedID = NULL;
static jmethodID windowDestroyNotifyID = NULL;
static jmethodID windowDestroyedID = NULL;
-static jmethodID enqueueMouseEventID = NULL;
-static jmethodID enqueueKeyEventID = NULL;
-static jmethodID sendPaintEventID = NULL;
+static jmethodID windowRepaintID = NULL;
+static jmethodID sendMouseEventID = NULL;
+static jmethodID sendKeyEventID = NULL;
+static jmethodID focusActionID = NULL;
static RECT* UpdateInsets(JNIEnv *env, HWND hwnd, jobject window);
@@ -506,7 +508,7 @@ static int WmChar(JNIEnv *env, jobject window, UINT character, UINT repCnt,
if (character == VK_RETURN) {
character = J_VK_ENTER;
}
- (*env)->CallVoidMethod(env, window, enqueueKeyEventID,
+ (*env)->CallVoidMethod(env, window, sendKeyEventID,
(jint) EVENT_KEY_TYPED,
GetModifiers(),
(jint) -1,
@@ -551,7 +553,7 @@ static int WmKeyDown(JNIEnv *env, jobject window, UINT wkey, UINT repCnt,
character = WindowsKeyToJavaChar(wkey, modifiers, SAVE);
*/
- (*env)->CallVoidMethod(env, window, enqueueKeyEventID,
+ (*env)->CallVoidMethod(env, window, sendKeyEventID,
(jint) EVENT_KEY_PRESSED,
modifiers,
(jint) jkey,
@@ -562,7 +564,7 @@ static int WmKeyDown(JNIEnv *env, jobject window, UINT wkey, UINT repCnt,
WM_KEYDOWN.
*/
if (jkey == J_VK_DELETE) {
- (*env)->CallVoidMethod(env, window, enqueueKeyEventID,
+ (*env)->CallVoidMethod(env, window, sendKeyEventID,
(jint) EVENT_KEY_TYPED,
GetModifiers(),
(jint) -1,
@@ -586,7 +588,7 @@ static int WmKeyUp(JNIEnv *env, jobject window, UINT wkey, UINT repCnt,
character = WindowsKeyToJavaChar(wkey, modifiers, SAVE);
*/
- (*env)->CallVoidMethod(env, window, enqueueKeyEventID,
+ (*env)->CallVoidMethod(env, window, sendKeyEventID,
(jint) EVENT_KEY_RELEASED,
modifiers,
(jint) jkey,
@@ -595,23 +597,27 @@ static int WmKeyUp(JNIEnv *env, jobject window, UINT wkey, UINT repCnt,
return 0;
}
-static void NewtWindows_requestFocus (HWND hwnd, BOOL topLevel, BOOL reparented) {
- DBG_PRINT("*** WindowsWindow: requestFocus.0 window %p\n", (void*)hwnd);
- if (IsWindow(hwnd)) {
- UINT flags = SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE;
- if(reparented) {
- flags |= SWP_FRAMECHANGED;
- }
- SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, flags);
- DBG_PRINT("*** WindowsWindow: requestFocus.1\n");
- SetForegroundWindow(hwnd); // Slightly Higher Priority
- DBG_PRINT("*** WindowsWindow: requestFocus.2\n");
- SetFocus(hwnd);// Sets Keyboard Focus To TheWindow
- DBG_PRINT("*** WindowsWindow: requestFocus.3\n");
- if(topLevel) {
- SetActiveWindow(hwnd);
+static void NewtWindows_requestFocus (JNIEnv *env, jobject window, HWND hwnd, BOOL reparented) {
+ HWND pHwnd = GetParent(hwnd);
+ HWND current = GetFocus();
+ DBG_PRINT("*** WindowsWindow: requestFocus.0 parent %p, window %p, isCurrent %d\n",
+ (void*) pHwnd, (void*)hwnd, current==hwnd);
+ if(reparented || current!=hwnd) {
+ if( JNI_FALSE == (*env)->CallBooleanMethod(env, window, focusActionID) ) {
+ UINT flags = SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE;
+ if(reparented) {
+ flags |= SWP_FRAMECHANGED;
+ }
+ SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, flags);
+ SetForegroundWindow(hwnd); // Slightly Higher Priority
+ SetFocus(hwnd);// Sets Keyboard Focus To Window
+ if(NULL!=pHwnd) {
+ SetActiveWindow(hwnd);
+ }
+ DBG_PRINT("*** WindowsWindow: requestFocus.X1\n");
+ } else {
+ DBG_PRINT("*** WindowsWindow: requestFocus.X0\n");
}
- DBG_PRINT("*** WindowsWindow: requestFocus.X\n");
}
}
@@ -706,6 +712,7 @@ static void WmSize(JNIEnv *env, HWND wnd, jobject window, UINT type)
static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
+ LRESULT res = 0;
int useDefWindowProc = 0;
JNIEnv *env = NULL;
jobject window = NULL;
@@ -798,8 +805,9 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
case WM_LBUTTONDOWN:
- NewtWindows_requestFocus ( wnd, FALSE, FALSE ); // request focus on this window, if not already ..
- (*env)->CallVoidMethod(env, window, enqueueMouseEventID,
+ DBG_PRINT("*** WindowsWindow: LBUTTONDOWN\n");
+ NewtWindows_requestFocus ( env, window, wnd, FALSE ); // request focus on this window, if not already ..
+ (*env)->CallVoidMethod(env, window, sendMouseEventID,
(jint) EVENT_MOUSE_PRESSED,
GetModifiers(),
(jint) LOWORD(lParam), (jint) HIWORD(lParam),
@@ -808,7 +816,7 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
break;
case WM_LBUTTONUP:
- (*env)->CallVoidMethod(env, window, enqueueMouseEventID,
+ (*env)->CallVoidMethod(env, window, sendMouseEventID,
(jint) EVENT_MOUSE_RELEASED,
GetModifiers(),
(jint) LOWORD(lParam), (jint) HIWORD(lParam),
@@ -817,8 +825,9 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
break;
case WM_MBUTTONDOWN:
- NewtWindows_requestFocus ( wnd, FALSE, FALSE ); // request focus on this window, if not already ..
- (*env)->CallVoidMethod(env, window, enqueueMouseEventID,
+ DBG_PRINT("*** WindowsWindow: MBUTTONDOWN\n");
+ NewtWindows_requestFocus ( env, window, wnd, FALSE ); // request focus on this window, if not already ..
+ (*env)->CallVoidMethod(env, window, sendMouseEventID,
(jint) EVENT_MOUSE_PRESSED,
GetModifiers(),
(jint) LOWORD(lParam), (jint) HIWORD(lParam),
@@ -827,7 +836,7 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
break;
case WM_MBUTTONUP:
- (*env)->CallVoidMethod(env, window, enqueueMouseEventID,
+ (*env)->CallVoidMethod(env, window, sendMouseEventID,
(jint) EVENT_MOUSE_RELEASED,
GetModifiers(),
(jint) LOWORD(lParam), (jint) HIWORD(lParam),
@@ -836,8 +845,9 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
break;
case WM_RBUTTONDOWN:
- NewtWindows_requestFocus ( wnd, FALSE, FALSE ); // request focus on this window, if not already ..
- (*env)->CallVoidMethod(env, window, enqueueMouseEventID,
+ DBG_PRINT("*** WindowsWindow: RBUTTONDOWN\n");
+ NewtWindows_requestFocus ( env, window, wnd, FALSE ); // request focus on this window, if not already ..
+ (*env)->CallVoidMethod(env, window, sendMouseEventID,
(jint) EVENT_MOUSE_PRESSED,
GetModifiers(),
(jint) LOWORD(lParam), (jint) HIWORD(lParam),
@@ -846,7 +856,7 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
break;
case WM_RBUTTONUP:
- (*env)->CallVoidMethod(env, window, enqueueMouseEventID,
+ (*env)->CallVoidMethod(env, window, sendMouseEventID,
(jint) EVENT_MOUSE_RELEASED,
GetModifiers(),
(jint) LOWORD(lParam), (jint) HIWORD(lParam),
@@ -855,7 +865,7 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
break;
case WM_MOUSEMOVE:
- (*env)->CallVoidMethod(env, window, enqueueMouseEventID,
+ (*env)->CallVoidMethod(env, window, sendMouseEventID,
(jint) EVENT_MOUSE_MOVED,
GetModifiers(),
(jint) LOWORD(lParam), (jint) HIWORD(lParam),
@@ -871,7 +881,7 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
eventPt.x = x;
eventPt.y = y;
ScreenToClient(wnd, &eventPt);
- (*env)->CallVoidMethod(env, window, enqueueMouseEventID,
+ (*env)->CallVoidMethod(env, window, sendMouseEventID,
(jint) EVENT_MOUSE_WHEEL_MOVED,
GetModifiers(),
(jint) eventPt.x, (jint) eventPt.y,
@@ -881,17 +891,19 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
}
case WM_SETFOCUS:
- (*env)->CallVoidMethod(env, window, focusChangedID,
- (jlong)wParam, JNI_TRUE);
+ (*env)->CallVoidMethod(env, window, focusChangedID, JNI_TRUE);
useDefWindowProc = 1;
break;
case WM_KILLFOCUS:
- (*env)->CallVoidMethod(env, window, focusChangedID,
- (jlong)wParam, JNI_FALSE);
+ (*env)->CallVoidMethod(env, window, focusChangedID, JNI_FALSE);
useDefWindowProc = 1;
break;
+ case WM_SHOWWINDOW:
+ (*env)->CallVoidMethod(env, window, visibleChangedID, wParam==TRUE?JNI_TRUE:JNI_FALSE);
+ break;
+
case WM_MOVE:
DBG_PRINT("*** WindowsWindow: WM_MOVE window %p, %d/%d\n", wnd, (int)LOWORD(lParam), (int)HIWORD(lParam));
(*env)->CallVoidMethod(env, window, positionChangedID,
@@ -901,21 +913,24 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
case WM_PAINT: {
RECT r;
- if (GetUpdateRect(wnd, &r, FALSE)) {
- if ((r.right-r.left) > 0 && (r.bottom-r.top) > 0) {
- (*env)->CallVoidMethod(env, window, sendPaintEventID,
- 0, r.left, r.top, r.right-r.left, r.bottom-r.top);
+ useDefWindowProc = 0;
+ if (GetUpdateRect(wnd, &r, TRUE /* erase background */)) {
+ /*
+ jint width = r.right-r.left;
+ jint height = r.bottom-r.top;
+ if (width > 0 && height > 0) {
+ (*env)->CallVoidMethod(env, window, windowRepaintID, r.left, r.top, width, height);
}
ValidateRect(wnd, &r);
- useDefWindowProc = 0;
- } else {
- useDefWindowProc = 1;
+ */
}
break;
}
case WM_ERASEBKGND:
// ignore erase background
+ (*env)->CallVoidMethod(env, window, windowRepaintID, 0, 0, -1, -1);
useDefWindowProc = 0;
+ res = 1;
break;
@@ -926,7 +941,7 @@ static LRESULT CALLBACK wndProc(HWND wnd, UINT message,
if (useDefWindowProc)
return DefWindowProc(wnd, message, wParam, lParam);
- return 0;
+ return res;
}
/*
@@ -1052,24 +1067,29 @@ JNIEXPORT jint JNICALL Java_com_jogamp_newt_impl_windows_WindowsScreen_getHeight
JNIEXPORT jboolean JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_initIDs0
(JNIEnv *env, jclass clazz)
{
- sizeChangedID = (*env)->GetMethodID(env, clazz, "sizeChanged", "(II)V");
insetsChangedID = (*env)->GetMethodID(env, clazz, "insetsChanged", "(IIII)V");
+ sizeChangedID = (*env)->GetMethodID(env, clazz, "sizeChanged", "(II)V");
positionChangedID = (*env)->GetMethodID(env, clazz, "positionChanged", "(II)V");
- focusChangedID = (*env)->GetMethodID(env, clazz, "focusChanged", "(JZ)V");
+ focusChangedID = (*env)->GetMethodID(env, clazz, "focusChanged", "(Z)V");
+ visibleChangedID = (*env)->GetMethodID(env, clazz, "visibleChanged", "(Z)V");
windowDestroyNotifyID = (*env)->GetMethodID(env, clazz, "windowDestroyNotify", "()V");
windowDestroyedID = (*env)->GetMethodID(env, clazz, "windowDestroyed", "()V");
- enqueueMouseEventID = (*env)->GetMethodID(env, clazz, "enqueueMouseEvent", "(IIIIII)V");
- enqueueKeyEventID = (*env)->GetMethodID(env, clazz, "enqueueKeyEvent", "(IIIC)V");
- sendPaintEventID = (*env)->GetMethodID(env, clazz, "sendPaintEvent", "(IIIII)V");
- if (sizeChangedID == NULL ||
- insetsChangedID == NULL ||
+ windowRepaintID = (*env)->GetMethodID(env, clazz, "windowRepaint", "(IIII)V");
+ sendMouseEventID = (*env)->GetMethodID(env, clazz, "sendMouseEvent", "(IIIIII)V");
+ sendKeyEventID = (*env)->GetMethodID(env, clazz, "sendKeyEvent", "(IIIC)V");
+ focusActionID = (*env)->GetMethodID(env, clazz, "focusAction", "()Z");
+
+ if (insetsChangedID == NULL ||
+ sizeChangedID == NULL ||
positionChangedID == NULL ||
focusChangedID == NULL ||
+ visibleChangedID == NULL ||
windowDestroyNotifyID == NULL ||
windowDestroyedID == NULL ||
- enqueueMouseEventID == NULL ||
- sendPaintEventID == NULL ||
- enqueueKeyEventID == NULL)
+ windowRepaintID == NULL ||
+ sendMouseEventID == NULL ||
+ sendKeyEventID == NULL ||
+ focusActionID == NULL)
{
return JNI_FALSE;
}
@@ -1139,13 +1159,6 @@ JNIEXPORT jlong JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_CreateWi
#endif
UpdateInsets(env, window, obj);
-
- ShowWindow(window, SW_SHOWNORMAL);
- if(NULL!=parentWindow) {
- NewtWindows_requestFocus ( window, FALSE, FALSE ); // request focus on this window, if not already ..
- } /* else {
- // top level already capable of receiving [keyboard] events
- } */
}
#ifdef UNICODE
@@ -1215,13 +1228,13 @@ JNIEXPORT jlong JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_MonitorF
JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_setVisible0
(JNIEnv *_env, jclass clazz, jlong window, jboolean visible)
{
- HWND hWnd = (HWND) (intptr_t) window;
- DBG_PRINT("*** WindowsWindow: setVisible window %p, visible: %d\n", hWnd, (int)visible);
+ HWND hwnd = (HWND) (intptr_t) window;
+ DBG_PRINT("*** WindowsWindow: setVisible window %p, visible: %d\n", hwnd, (int)visible);
if (visible) {
- SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
- ShowWindow(hWnd, SW_SHOW);
+ SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
+ ShowWindow(hwnd, SW_SHOW);
} else {
- ShowWindow(hWnd, SW_HIDE);
+ ShowWindow(hwnd, SW_HIDE);
}
}
@@ -1292,14 +1305,14 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_setPositi
}
}
-static void NewtWindows_reparentWindow(HWND hwndP, HWND hwnd, jint x, jint y, jint width, jint height, jboolean bIsUndecorated)
+static void NewtWindows_reparentWindow(JNIEnv *env, jobject obj, HWND hwndP, HWND hwnd, BOOL visible,
+ jint x, jint y, jint width, jint height, jboolean bIsUndecorated)
{
UINT flags;
HWND hWndInsertAfter;
DWORD windowStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN ;
- BOOL isVisible = IsWindowVisible(hwnd);
- DBG_PRINT("*** WindowsWindow: reparentWindow.1 parent %p, window %p, %d/%d %dx%d undeco %d visible %d\n", (void*)hwndP, (void*)hwnd, x, y, width, height, bIsUndecorated, isVisible);
+ DBG_PRINT("*** WindowsWindow: reparentWindow.1 parent %p, window %p, %d/%d %dx%d undeco %d\n", (void*)hwndP, (void*)hwnd, x, y, width, height, bIsUndecorated);
if (!IsWindow(hwnd)) {
DBG_PRINT("*** WindowsWindow: reparentWindow failure: Passed window %p is invalid\n", (void*)hwnd);
return;
@@ -1309,8 +1322,8 @@ static void NewtWindows_reparentWindow(HWND hwndP, HWND hwnd, jint x, jint y, ji
return;
}
- if (isVisible) {
- windowStyle |= WS_VISIBLE;
+ if(visible) {
+ windowStyle |= WS_VISIBLE ;
}
// order of call sequence: (MS documentation)
@@ -1337,10 +1350,6 @@ static void NewtWindows_reparentWindow(HWND hwndP, HWND hwnd, jint x, jint y, ji
DBG_PRINT("*** WindowsWindow: reparentWindow.4\n");
}
- if(isVisible) {
- NewtWindows_requestFocus ( hwnd, ( NULL == hwndP ) ? TRUE : FALSE, TRUE );
- }
-
DBG_PRINT("*** WindowsWindow: reparentWindow.X\n");
}
@@ -1356,13 +1365,12 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_setFullsc
HWND hwndP = (HWND) (intptr_t) parent;
HWND hwnd = (HWND) (intptr_t) window;
HWND hWndInsertAfter;
- DWORD windowStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE;
BOOL isVisible = IsWindowVisible(hwnd);
DBG_PRINT("*** WindowsWindow: setFullscreen.1 parent %p, window %p, %d/%d %dx%d undeco %d visible\n",
parent, window, x, y, width, height, bIsUndecorated, isVisible);
- NewtWindows_reparentWindow(hwndP, hwnd, x, y, width, height, bIsUndecorated);
+ NewtWindows_reparentWindow(env, obj, hwndP, hwnd, FALSE, x, y, width, height, bIsUndecorated);
if ( NULL == hwndP ) {
flags = SWP_SHOWWINDOW;
@@ -1371,9 +1379,12 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_setFullsc
flags = SWP_NOACTIVATE | SWP_NOZORDER;
hWndInsertAfter = 0;
}
-
SetWindowPos(hwnd, hWndInsertAfter, x, y, width, height, flags);
+ if(isVisible) {
+ NewtWindows_requestFocus ( env, obj, hwnd, TRUE ); // request focus on this window, if not already ..
+ }
+
DBG_PRINT("*** WindowsWindow: setFullscreen.X\n");
(*env)->CallVoidMethod(env, obj, sizeChangedID, (jint) width, (jint) height); // resize necessary ..
}
@@ -1388,8 +1399,14 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_reparentW
{
HWND hwndP = (HWND) (intptr_t) parent;
HWND hwnd = (HWND) (intptr_t) window;
+ BOOL isVisible = IsWindowVisible(hwnd);
+
+ NewtWindows_reparentWindow(env, obj, hwndP, hwnd, FALSE, x, y, width, height, bIsUndecorated);
+
+ if(isVisible) {
+ NewtWindows_requestFocus ( env, obj, hwnd, TRUE ); // request focus on this window, if not already ..
+ }
- NewtWindows_reparentWindow(hwndP, hwnd, x, y, width, height, bIsUndecorated);
}
/*
@@ -1416,8 +1433,9 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_setTitle0
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_windows_WindowsWindow_requestFocus0
- (JNIEnv *env, jclass clazz, jlong parent, jlong window)
+ (JNIEnv *env, jobject obj, jlong window)
{
- NewtWindows_requestFocus ( (HWND) (intptr_t) window, (0 == parent) ? TRUE : FALSE, FALSE ) ;
+ DBG_PRINT("*** WindowsWindow: RequestFocus0\n");
+ NewtWindows_requestFocus ( env, obj, (HWND) (intptr_t) window, FALSE ) ;
}
diff --git a/src/newt/native/X11Window.c b/src/newt/native/X11Window.c
index a521d2dbd..60caab662 100755..100644
--- a/src/newt/native/X11Window.c
+++ b/src/newt/native/X11Window.c
@@ -151,14 +151,17 @@ static const char * const ClazzNameNewtWindow =
"com/jogamp/newt/Window";
static jclass newtWindowClz=NULL;
-static jmethodID windowChangedID = NULL;
+static jmethodID sizeChangedID = NULL;
+static jmethodID positionChangedID = NULL;
static jmethodID focusChangedID = NULL;
static jmethodID visibleChangedID = NULL;
static jmethodID windowDestroyNotifyID = NULL;
static jmethodID windowDestroyedID = NULL;
+static jmethodID windowRepaintID = NULL;
static jmethodID windowCreatedID = NULL;
-static jmethodID enqueueMouseEventID = NULL;
-static jmethodID enqueueKeyEventID = NULL;
+static jmethodID sendMouseEventID = NULL;
+static jmethodID sendKeyEventID = NULL;
+static jmethodID focusActionID = NULL;
static jmethodID displayCompletedID = NULL;
@@ -291,8 +294,7 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Display_CompleteDisplay0
* Window
*/
-// #define WINDOW_EVENT_MASK ( FocusChangeMask | StructureNotifyMask | ExposureMask | VisibilityNotify )
-#define WINDOW_EVENT_MASK ( FocusChangeMask | StructureNotifyMask | VisibilityNotify )
+#define WINDOW_EVENT_MASK ( FocusChangeMask | StructureNotifyMask | ExposureMask )
static int putPtrIn32Long(unsigned long * dst, uintptr_t src) {
int i=0;
@@ -371,18 +373,42 @@ static jobject getJavaWindowProperty(JNIEnv *env, Display *dpy, Window window, j
return jwindow;
}
-static void NewtWindows_requestFocus0 (Display *dpy, Window w, XWindowAttributes *xwa) {
- // Avoid 'BadMatch' errors from XSetInputFocus, ie if window is not viewable
- if(xwa->map_state == IsViewable) {
- XSetInputFocus(dpy, w, RevertToParent, CurrentTime);
+/**
+static Window NewtWindows_getParent (Display *dpy, Window w) {
+ Window root_return=0;
+ Window parent_return=0;
+ Window *children_return=NULL;
+ unsigned int nchildren_return=0;
+
+ Status res = XQueryTree(dpy, w, &root_return, &parent_return, &children_return, &nchildren_return);
+ if(NULL!=children_return) {
+ XFree(children_return);
+ }
+ if(0!=res) {
+ return parent_return;
+ }
+ return 0;
+} */
+
+static void NewtWindows_requestFocus0 (JNIEnv *env, jobject window, Display *dpy, Window w, XWindowAttributes *xwa) {
+ Window focus_return;
+ int revert_to_return;
+ XGetInputFocus(dpy, &focus_return, &revert_to_return);
+ if(focus_return!=w) {
+ // Avoid 'BadMatch' errors from XSetInputFocus, ie if window is not viewable
+ if( JNI_FALSE == (*env)->CallBooleanMethod(env, window, focusActionID) ) {
+ if(xwa->map_state == IsViewable) {
+ XSetInputFocus(dpy, w, RevertToParent, CurrentTime);
+ }
+ }
}
}
-static void NewtWindows_requestFocus1 (Display *dpy, Window w) {
+static void NewtWindows_requestFocus1 (JNIEnv *env, jobject window, Display *dpy, Window w) {
XWindowAttributes xwa;
XGetWindowAttributes(dpy, w, &xwa);
- NewtWindows_requestFocus0 (dpy, w, &xwa);
+ NewtWindows_requestFocus0 (env, window, dpy, w, &xwa);
XSync(dpy, False);
}
@@ -504,32 +530,38 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Display_DispatchMessages
switch(evt.type) {
case ButtonPress:
- NewtWindows_requestFocus1 ( dpy, evt.xany.window );
- (*env)->CallVoidMethod(env, jwindow, enqueueMouseEventID, (jint) EVENT_MOUSE_PRESSED,
+ NewtWindows_requestFocus1 ( env, jwindow, dpy, evt.xany.window );
+ (*env)->CallVoidMethod(env, jwindow, sendMouseEventID,
+ (jint) EVENT_MOUSE_PRESSED,
(jint) evt.xbutton.state,
(jint) evt.xbutton.x, (jint) evt.xbutton.y, (jint) evt.xbutton.button, 0 /*rotation*/);
break;
case ButtonRelease:
- (*env)->CallVoidMethod(env, jwindow, enqueueMouseEventID, (jint) EVENT_MOUSE_RELEASED,
+ (*env)->CallVoidMethod(env, jwindow, sendMouseEventID,
+ (jint) EVENT_MOUSE_RELEASED,
(jint) evt.xbutton.state,
(jint) evt.xbutton.x, (jint) evt.xbutton.y, (jint) evt.xbutton.button, 0 /*rotation*/);
break;
case MotionNotify:
- (*env)->CallVoidMethod(env, jwindow, enqueueMouseEventID, (jint) EVENT_MOUSE_MOVED,
+ (*env)->CallVoidMethod(env, jwindow, sendMouseEventID,
+ (jint) EVENT_MOUSE_MOVED,
(jint) evt.xmotion.state,
(jint) evt.xmotion.x, (jint) evt.xmotion.y, (jint) 0, 0 /*rotation*/);
break;
case KeyPress:
- (*env)->CallVoidMethod(env, jwindow, enqueueKeyEventID, (jint) EVENT_KEY_PRESSED,
+ (*env)->CallVoidMethod(env, jwindow, sendKeyEventID,
+ (jint) EVENT_KEY_PRESSED,
(jint) evt.xkey.state,
X11KeySym2NewtVKey(keySym), (jchar) keyChar);
break;
case KeyRelease:
- (*env)->CallVoidMethod(env, jwindow, enqueueKeyEventID, (jint) EVENT_KEY_RELEASED,
+ (*env)->CallVoidMethod(env, jwindow, sendKeyEventID,
+ (jint) EVENT_KEY_RELEASED,
(jint) evt.xkey.state,
X11KeySym2NewtVKey(keySym), (jchar) keyChar);
- (*env)->CallVoidMethod(env, jwindow, enqueueKeyEventID, (jint) EVENT_KEY_TYPED,
+ (*env)->CallVoidMethod(env, jwindow, sendKeyEventID,
+ (jint) EVENT_KEY_TYPED,
(jint) evt.xkey.state,
(jint) -1, (jchar) keyChar);
break;
@@ -546,9 +578,10 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Display_DispatchMessages
(unsigned int)evt.xconfigure.window, (unsigned int)evt.xconfigure.event, (unsigned int)evt.xconfigure.above,
evt.xconfigure.x, evt.xconfigure.y, evt.xconfigure.width, evt.xconfigure.height,
evt.xconfigure.override_redirect);
- (*env)->CallVoidMethod(env, jwindow, windowChangedID,
- (jint) evt.xconfigure.x, (jint) evt.xconfigure.y,
+ (*env)->CallVoidMethod(env, jwindow, sizeChangedID,
(jint) evt.xconfigure.width, (jint) evt.xconfigure.height);
+ (*env)->CallVoidMethod(env, jwindow, positionChangedID,
+ (jint) evt.xconfigure.x, (jint) evt.xconfigure.y);
break;
case ClientMessage:
if (evt.xclient.send_event==True && evt.xclient.data.l[0]==(Atom)wmDeleteAtom) {
@@ -568,25 +601,28 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Display_DispatchMessages
(*env)->CallVoidMethod(env, jwindow, focusChangedID, JNI_FALSE);
break;
+ case Expose:
+ DBG_PRINT( "X11: event . Expose call 0x%X %d/%d %dx%d\n", (unsigned int)evt.xexpose.window,
+ evt.xexpose.x, evt.xexpose.y, evt.xexpose.width, evt.xexpose.height);
+
+ if (evt.xexpose.width > 0 && evt.xexpose.height > 0) {
+ (*env)->CallVoidMethod(env, jwindow, windowRepaintID,
+ evt.xexpose.x, evt.xexpose.y, evt.xexpose.width, evt.xexpose.height);
+ }
+ break;
+
case MapNotify:
DBG_PRINT( "X11: event . MapNotify call 0x%X\n", (unsigned int)evt.xunmap.window);
- // FIXME (*env)->CallVoidMethod(env, jwindow, visibleChangedID, JNI_TRUE);
+ (*env)->CallVoidMethod(env, jwindow, visibleChangedID, JNI_TRUE);
break;
case UnmapNotify:
DBG_PRINT( "X11: event . UnmapNotify call 0x%X\n", (unsigned int)evt.xunmap.window);
- // FIXME (*env)->CallVoidMethod(env, jwindow, visibleChangedID, JNI_FALSE);
+ (*env)->CallVoidMethod(env, jwindow, visibleChangedID, JNI_FALSE);
break;
// unhandled events .. yet ..
- case VisibilityNotify:
- DBG_PRINT( "X11: event . VisibilityNotify call 0x%X\n", (unsigned int)evt.xvisibility.window);
- break;
- case Expose:
- DBG_PRINT( "X11: event . Expose call 0x%X\n", (unsigned int)evt.xexpose.window);
- /* FIXME: Might want to send a repaint event .. */
- break;
default:
DBG_PRINT("X11: event . unhandled %d 0x%X call 0x%X\n", evt.type, evt.type, (unsigned int)evt.xunmap.window);
}
@@ -653,23 +689,29 @@ JNIEXPORT jint JNICALL Java_com_jogamp_newt_impl_x11_X11Screen_getHeight0
JNIEXPORT jboolean JNICALL Java_com_jogamp_newt_impl_x11_X11Window_initIDs0
(JNIEnv *env, jclass clazz)
{
- windowChangedID = (*env)->GetMethodID(env, clazz, "windowChanged", "(IIII)V");
+ sizeChangedID = (*env)->GetMethodID(env, clazz, "sizeChanged", "(II)V");
+ positionChangedID = (*env)->GetMethodID(env, clazz, "positionChanged", "(II)V");
focusChangedID = (*env)->GetMethodID(env, clazz, "focusChanged", "(Z)V");
visibleChangedID = (*env)->GetMethodID(env, clazz, "visibleChanged", "(Z)V");
windowDestroyNotifyID = (*env)->GetMethodID(env, clazz, "windowDestroyNotify", "()V");
windowDestroyedID = (*env)->GetMethodID(env, clazz, "windowDestroyed", "()V");
+ windowRepaintID = (*env)->GetMethodID(env, clazz, "windowRepaint", "(IIII)V");
windowCreatedID = (*env)->GetMethodID(env, clazz, "windowCreated", "(J)V");
- enqueueMouseEventID = (*env)->GetMethodID(env, clazz, "enqueueMouseEvent", "(IIIIII)V");
- enqueueKeyEventID = (*env)->GetMethodID(env, clazz, "enqueueKeyEvent", "(IIIC)V");
+ sendMouseEventID = (*env)->GetMethodID(env, clazz, "sendMouseEvent", "(IIIIII)V");
+ sendKeyEventID = (*env)->GetMethodID(env, clazz, "sendKeyEvent", "(IIIC)V");
+ focusActionID = (*env)->GetMethodID(env, clazz, "focusAction", "()Z");
- if (windowChangedID == NULL ||
+ if (sizeChangedID == NULL ||
+ positionChangedID == NULL ||
focusChangedID == NULL ||
visibleChangedID == NULL ||
windowDestroyNotifyID == NULL ||
windowDestroyedID == NULL ||
+ windowRepaintID == NULL ||
windowCreatedID == NULL ||
- enqueueMouseEventID == NULL ||
- enqueueKeyEventID == NULL) {
+ sendMouseEventID == NULL ||
+ sendKeyEventID == NULL ||
+ focusActionID == NULL) {
return JNI_FALSE;
}
return JNI_TRUE;
@@ -749,12 +791,17 @@ JNIEXPORT jlong JNICALL Java_com_jogamp_newt_impl_x11_X11Window_CreateWindow0
pVisualQuery=NULL;
}
- attrMask = ( CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect ) ;
+ attrMask = ( CWBackingStore | CWBackingPlanes | CWBackingPixel | CWBackPixel |
+ CWBorderPixel | CWColormap | CWOverrideRedirect ) ;
memset(&xswa, 0, sizeof(xswa));
xswa.override_redirect = ( 0 != parent ) ? True : False ;
xswa.border_pixel = 0;
xswa.background_pixel = 0;
+ xswa.backing_store=NotUseful; /* NotUseful, WhenMapped, Always */
+ xswa.backing_planes=0; /* planes to be preserved if possible */
+ xswa.backing_pixel=0; /* value to use in restoring planes */
+
xswa.colormap = XCreateColormap(dpy,
windowParent, // XRootWindow(dpy, scrn_idx),
visual,
@@ -781,6 +828,7 @@ JNIEXPORT jlong JNICALL Java_com_jogamp_newt_impl_x11_X11Window_CreateWindow0
setJavaWindowProperty(env, dpy, window, javaObjectAtom, (*env)->NewGlobalRef(env, obj));
+ // XClearWindow(dpy, window);
XSync(dpy, False);
{
@@ -806,7 +854,7 @@ JNIEXPORT jlong JNICALL Java_com_jogamp_newt_impl_x11_X11Window_CreateWindow0
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Window_CloseWindow0
- (JNIEnv *env, jobject obj, jlong display, jlong window, jlong javaObjectAtom)
+ (JNIEnv *env, jobject obj, jlong display, jlong window, jlong javaObjectAtom, jlong wmDeleteAtom)
{
Display * dpy = (Display *) (intptr_t) display;
Window w = (Window)window;
@@ -827,14 +875,19 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Window_CloseWindow0
_throwNewRuntimeException(dpy, env, "Internal Error .. Window global ref not the same!");
return;
}
- (*env)->DeleteGlobalRef(env, jwindow);
XSync(dpy, False);
XSelectInput(dpy, w, 0);
XUnmapWindow(dpy, w);
+
+ // Drain all events related to this window ..
+ JNICALL Java_com_jogamp_newt_impl_x11_X11Display_DispatchMessages0(env, obj, display, javaObjectAtom, wmDeleteAtom);
+
XDestroyWindow(dpy, w);
XSync(dpy, False);
+ (*env)->DeleteGlobalRef(env, jwindow);
+
DBG_PRINT( "X11: CloseWindow END\n");
(*env)->CallVoidMethod(env, obj, windowDestroyedID);
@@ -915,13 +968,20 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Window_setPosition0
}
static void NewtWindows_reparentWindow
- (Display * dpy, Screen * scrn, Window w, XWindowAttributes *xwa, jlong jparent, jint x, jint y, jboolean undecorated, jboolean isVisible)
+ (JNIEnv *env, jobject obj,
+ Display * dpy, Screen * scrn, Window w, XWindowAttributes *xwa, jlong jparent,
+ jint x, jint y, jboolean undecorated, jboolean isVisible)
{
Window parent = (0!=jparent)?(Window)jparent:XRootWindowOfScreen(scrn);
DBG_PRINT( "X11: reparentWindow dpy %p, parent %p/%p, win %p, %d/%d undec %d\n",
(void*)dpy, (void*) jparent, (void*)parent, (void*)w, x, y, undecorated);
+ // don't propagate events during reparenting
+ // long orig_xevent_mask = xwa->your_event_mask ;
+ /* XSelectInput(dpy, w, orig_xevent_mask & ~ ( StructureNotifyMask ) );
+ XSync(dpy, False); */
+
if(0 != jparent) {
// move into parent ..
NewtWindows_setDecorations (dpy, w, False);
@@ -955,6 +1015,14 @@ static void NewtWindows_reparentWindow
XSync(dpy, False);
}
+ /* XSelectInput(dpy, w, orig_xevent_mask);
+ XSync(dpy, False); */
+
+ if(JNI_TRUE == isVisible) {
+ NewtWindows_requestFocus0 ( env, obj, dpy, w, xwa );
+ XSync(dpy, False);
+ }
+
DBG_PRINT( "X11: reparentWindow X\n");
}
@@ -984,7 +1052,7 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Window_setPosSizeDecor0
XSync(dpy, False);
XGetWindowAttributes(dpy, w, &xwa);
- NewtWindows_reparentWindow(dpy, scrn, w, &xwa, jparent, x, y, undecorated, isVisible);
+ NewtWindows_reparentWindow(env, obj, dpy, scrn, w, &xwa, jparent, x, y, undecorated, isVisible);
XSync(dpy, False);
memset(&xwc, 0, sizeof(XWindowChanges));
@@ -993,12 +1061,6 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Window_setPosSizeDecor0
xwc.width=width;
xwc.height=height;
XConfigureWindow(dpy, w, CWX|CWY|CWWidth|CWHeight, &xwc);
-
- if(JNI_TRUE == isVisible) {
- XGetWindowAttributes(dpy, w, &xwa);
- NewtWindows_requestFocus0 ( dpy, w, &xwa );
- XSync(dpy, False);
- }
}
/*
@@ -1025,7 +1087,7 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Window_reparentWindow0
XSync(dpy, False);
XGetWindowAttributes(dpy, w, &xwa);
- NewtWindows_reparentWindow(dpy, scrn, w, &xwa, jparent, x, y, undecorated, isVisible);
+ NewtWindows_reparentWindow(env, obj, dpy, scrn, w, &xwa, jparent, x, y, undecorated, isVisible);
XSync(dpy, False);
DBG_PRINT( "X11: reparentWindow0 X\n");
@@ -1039,7 +1101,7 @@ JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Window_reparentWindow0
JNIEXPORT void JNICALL Java_com_jogamp_newt_impl_x11_X11Window_requestFocus0
(JNIEnv *env, jobject obj, jlong display, jlong window)
{
- NewtWindows_requestFocus ( (Display *) (intptr_t) display, (Window)window ) ;
+ NewtWindows_requestFocus1 ( env, obj, (Display *) (intptr_t) display, (Window)window ) ;
}
/*
diff --git a/test/Issue326Test1.java b/test/Issue326Test1.java
index 217c2819b..217c2819b 100755..100644
--- a/test/Issue326Test1.java
+++ b/test/Issue326Test1.java
diff --git a/test/Issue326Test2.java b/test/Issue326Test2.java
index 10ec4417b..10ec4417b 100755..100644
--- a/test/Issue326Test2.java
+++ b/test/Issue326Test2.java
diff --git a/test/Issue344Base.java b/test/Issue344Base.java
index 6d0c99290..6d0c99290 100755..100644
--- a/test/Issue344Base.java
+++ b/test/Issue344Base.java
diff --git a/test/Issue344Test1.java b/test/Issue344Test1.java
index c0608ed6e..c0608ed6e 100755..100644
--- a/test/Issue344Test1.java
+++ b/test/Issue344Test1.java
diff --git a/test/Issue344Test2.java b/test/Issue344Test2.java
index b0900438c..b0900438c 100755..100644
--- a/test/Issue344Test2.java
+++ b/test/Issue344Test2.java
diff --git a/test/Issue344Test3.java b/test/Issue344Test3.java
index 381bf0a1c..381bf0a1c 100755..100644
--- a/test/Issue344Test3.java
+++ b/test/Issue344Test3.java
diff --git a/test/Issue344Test4.java b/test/Issue344Test4.java
index 1e077d2fd..1e077d2fd 100755..100644
--- a/test/Issue344Test4.java
+++ b/test/Issue344Test4.java
diff --git a/www/2125.pdf b/www/2125.pdf
index dbd2e5816..dbd2e5816 100755..100644
--- a/www/2125.pdf
+++ b/www/2125.pdf
Binary files differ
diff --git a/www/3167.pdf b/www/3167.pdf
index 5d61b89ba..5d61b89ba 100755..100644
--- a/www/3167.pdf
+++ b/www/3167.pdf
Binary files differ
diff --git a/www/BOF-3908-JOGL-slides.pdf b/www/BOF-3908-JOGL-slides.pdf
index 710f2e8df..710f2e8df 100755..100644
--- a/www/BOF-3908-JOGL-slides.pdf
+++ b/www/BOF-3908-JOGL-slides.pdf
Binary files differ
diff --git a/www/JOGLGlueGen.pdf b/www/JOGLGlueGen.pdf
index df67d05ed..df67d05ed 100755..100644
--- a/www/JOGLGlueGen.pdf
+++ b/www/JOGLGlueGen.pdf
Binary files differ
diff --git a/www/alm-process/snippets/page.xml b/www/alm-process/snippets/page.xml
deleted file mode 100644
index 725def6ed..000000000
--- a/www/alm-process/snippets/page.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<page visibility="1"><component_list><component visibility="1" type="ProjectMetadata" order="1"><title localize="false"></title></component><component visibility="1" type="Html" order="2"><title localize="false"></title><filename>index.html</filename></component><component visibility="1" type="Subproject" order="3"><title localize="true">Subprojects</title></component></component_list></page>
diff --git a/www/artofillusion.jpg b/www/artofillusion.jpg
index a4747f045..a4747f045 100755..100644
--- a/www/artofillusion.jpg
+++ b/www/artofillusion.jpg
Binary files differ
diff --git a/www/avengina.jpg b/www/avengina.jpg
index 267f4054a..267f4054a 100755..100644
--- a/www/avengina.jpg
+++ b/www/avengina.jpg
Binary files differ
diff --git a/www/bof0899.pdf b/www/bof0899.pdf
index fc2bc8732..fc2bc8732 100755..100644
--- a/www/bof0899.pdf
+++ b/www/bof0899.pdf
Binary files differ
diff --git a/www/chronotext.jpg b/www/chronotext.jpg
index 7636d3126..7636d3126 100755..100644
--- a/www/chronotext.jpg
+++ b/www/chronotext.jpg
Binary files differ
diff --git a/www/dukebeanem.jpg b/www/dukebeanem.jpg
deleted file mode 100755
index 68d3a72c6..000000000
--- a/www/dukebeanem.jpg
+++ /dev/null
Binary files differ
diff --git a/www/elflight.png b/www/elflight.png
deleted file mode 100644
index 5f5d59f9d..000000000
--- a/www/elflight.png
+++ /dev/null
Binary files differ
diff --git a/www/elflightengine-160x122.png b/www/elflightengine-160x122.png
new file mode 100644
index 000000000..92ecc12e9
--- /dev/null
+++ b/www/elflightengine-160x122.png
Binary files differ
diff --git a/www/fenggui.jpg b/www/fenggui.jpg
index c55a8c1c6..c55a8c1c6 100755..100644
--- a/www/fenggui.jpg
+++ b/www/fenggui.jpg
Binary files differ
diff --git a/www/fusion-laboratory.jpg b/www/fusion-laboratory.jpg
index 15b077f6c..15b077f6c 100755..100644
--- a/www/fusion-laboratory.jpg
+++ b/www/fusion-laboratory.jpg
Binary files differ
diff --git a/www/glstudio.jpg b/www/glstudio.jpg
index d11b1388f..d11b1388f 100755..100644
--- a/www/glstudio.jpg
+++ b/www/glstudio.jpg
Binary files differ
diff --git a/www/impact.jpg b/www/impact.jpg
index 7eb239a9a..7eb239a9a 100755..100644
--- a/www/impact.jpg
+++ b/www/impact.jpg
Binary files differ
diff --git a/www/index.html b/www/index.html
index 7cf10fe8d..21993aa69 100644
--- a/www/index.html
+++ b/www/index.html
@@ -246,14 +246,13 @@
of the <a href="http://db.cger.nies.go.jp/g3db/ggtu/trajectory.html">Global Greenhouse Gases Database</a>.
</td>
<td width="50%">
- <a href="http://www.codededge.com"><img src="elflight.png" width="160" height="95" align="left" alt="elflight engine"></img>
- The Elflight Engine</a> is a high
- performance 3D streaming game engine. It has been designed from the
- ground up for use over the World Wide Web. The streaming aspect of the
- engine allows a near "instant play" experience for the gamer. No
- massive downloads and no massive updates! The technology is
- particularly well suited to the development of MMOs and virtual
- worlds. The Elflight Engine uses JOGL to access the OpenGL API.
+ <a href="http://www.codededge.com"><img src="elflightengine-160x122.png" width="160" height="122" align="left" alt="elflight engine"></img>
+ The Elflight Engine</a> is a games engine designed for the web.
+ It supports hardware accelerated 3D games and applications in a web browser,
+ with the ability to import assets from major 3D packages such as Maya and 3D Studio.
+ The focus of the engine's architecture is minimal startup time, fast streaming, local
+ caching and collaborative real-time editing. The Elflight Engine is multi-user and so
+ lends itself to the development of virtual worlds and MMOs.
</td>
</tr>
diff --git a/www/jackflowers.jpg b/www/jackflowers.jpg
index 21e072f58..21e072f58 100755..100644
--- a/www/jackflowers.jpg
+++ b/www/jackflowers.jpg
Binary files differ
diff --git a/www/jake2.jpg b/www/jake2.jpg
index dd7bf96f7..dd7bf96f7 100755..100644
--- a/www/jake2.jpg
+++ b/www/jake2.jpg
Binary files differ
diff --git a/www/madlix.png b/www/madlix.png
index 8212497d4..8212497d4 100755..100644
--- a/www/madlix.png
+++ b/www/madlix.png
Binary files differ
diff --git a/www/mbt.jpg b/www/mbt.jpg
index e3c14790f..e3c14790f 100755..100644
--- a/www/mbt.jpg
+++ b/www/mbt.jpg
Binary files differ
diff --git a/www/processing.jpg b/www/processing.jpg
index cf833d4d0..cf833d4d0 100755..100644
--- a/www/processing.jpg
+++ b/www/processing.jpg
Binary files differ
diff --git a/www/raceview.jpg b/www/raceview.jpg
index a5c92ab60..a5c92ab60 100755..100644
--- a/www/raceview.jpg
+++ b/www/raceview.jpg
Binary files differ
diff --git a/www/scilab.png b/www/scilab.png
index 8e4c6d488..8e4c6d488 100755..100644
--- a/www/scilab.png
+++ b/www/scilab.png
Binary files differ
diff --git a/www/sharendipity.gif b/www/sharendipity.gif
index 95c8187d4..95c8187d4 100755..100644
--- a/www/sharendipity.gif
+++ b/www/sharendipity.gif
Binary files differ
diff --git a/www/specksim.jpg b/www/specksim.jpg
index accc70561..accc70561 100755..100644
--- a/www/specksim.jpg
+++ b/www/specksim.jpg
Binary files differ
diff --git a/www/strap.jpg b/www/strap.jpg
index 9f33848c1..9f33848c1 100755..100644
--- a/www/strap.jpg
+++ b/www/strap.jpg
Binary files differ
diff --git a/www/ts1361.pdf b/www/ts1361.pdf
index c405f6586..c405f6586 100755..100644
--- a/www/ts1361.pdf
+++ b/www/ts1361.pdf
Binary files differ
diff --git a/www/vldocking.jpg b/www/vldocking.jpg
index a4afaaf22..a4afaaf22 100755..100644
--- a/www/vldocking.jpg
+++ b/www/vldocking.jpg
Binary files differ
diff --git a/www/webstart/jogl-1-1.jar b/www/webstart/jogl-1-1.jar
deleted file mode 100644
index 3dc5d5109..000000000
--- a/www/webstart/jogl-1-1.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-1-1.jnlp b/www/webstart/jogl-1-1.jnlp
deleted file mode 100755
index 25b0eb264..000000000
--- a/www/webstart/jogl-1-1.jnlp
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<jnlp codebase="https://jogl.dev.java.net/webstart/"
- href="jogl-1-1.jnlp">
- <information>
- <title>JOGL</title>
- <vendor>Sun Microsystems, Inc.</vendor>
- <homepage href="http://jogl.dev.java.net/"/>
- <description>JOGL</description>
- <description kind="short">Java programming language binding for the OpenGL 3D graphics API.</description>
- <offline-allowed/>
- </information>
- <security>
- <all-permissions/>
- </security>
-
- <resources>
- <jar href="jogl-1-1.jar" />
- </resources>
- <resources os="Windows">
- <nativelib href = "jogl-natives-win32-1-1.jar" />
- </resources>
- <resources os="SunOS" arch="sparc">
- <nativelib href = "jogl-natives-solsparc-1-1.jar" />
- </resources>
- <resources os="SunOS" arch="x86">
- <nativelib href = "jogl-natives-solx86-1-1.jar" />
- </resources>
- <resources os="Linux">
- <nativelib href = "jogl-natives-linux-1-1.jar" />
- </resources>
- <resources os="Mac OS X">
- <nativelib href = "jogl-natives-macosx-1-1.jar" />
- </resources>
-
- <component-desc />
-</jnlp>
diff --git a/www/webstart/jogl-jsr-231.jar b/www/webstart/jogl-jsr-231.jar
deleted file mode 100644
index 49840ee19..000000000
--- a/www/webstart/jogl-jsr-231.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-jsr-231.jnlp b/www/webstart/jogl-jsr-231.jnlp
deleted file mode 100644
index 8efa7c796..000000000
--- a/www/webstart/jogl-jsr-231.jnlp
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<jnlp codebase="https://jogl.dev.java.net/webstart/"
- href="jogl-jsr-231.jnlp">
- <information>
- <title>JOGL</title>
- <vendor>Sun Microsystems, Inc.</vendor>
- <homepage href="http://jogl.dev.java.net/"/>
- <description>JOGL - JSR-231 Test Build</description>
- <description kind="short">Java programming language binding for the OpenGL 3D graphics API. (Test build of JSR-231 APIs)</description>
- <offline-allowed/>
- </information>
- <security>
- <all-permissions/>
- </security>
-
- <resources>
- <jar href="jogl-jsr-231.jar" />
- </resources>
- <resources os="Windows">
- <nativelib href = "jogl-natives-win32-jsr-231.jar" />
- </resources>
- <resources os="SunOS" arch="sparc">
- <nativelib href = "jogl-natives-solsparc-jsr-231.jar" />
- </resources>
- <resources os="SunOS" arch="x86">
- <nativelib href = "jogl-natives-solx86-jsr-231.jar" />
- </resources>
- <resources os="Linux">
- <nativelib href = "jogl-natives-linux-jsr-231.jar" />
- </resources>
- <resources os="Mac OS X">
- <nativelib href = "jogl-natives-macosx-jsr-231.jar" />
- </resources>
-
- <component-desc />
-</jnlp>
diff --git a/www/webstart/jogl-natives-linux-1-1.jar b/www/webstart/jogl-natives-linux-1-1.jar
deleted file mode 100644
index 3b075a21a..000000000
--- a/www/webstart/jogl-natives-linux-1-1.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-linux-jsr-231.jar b/www/webstart/jogl-natives-linux-jsr-231.jar
deleted file mode 100644
index c13fbf4eb..000000000
--- a/www/webstart/jogl-natives-linux-jsr-231.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-linux.jar b/www/webstart/jogl-natives-linux.jar
deleted file mode 100644
index 3b075a21a..000000000
--- a/www/webstart/jogl-natives-linux.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-macosx-1-1.jar b/www/webstart/jogl-natives-macosx-1-1.jar
deleted file mode 100644
index 80e919660..000000000
--- a/www/webstart/jogl-natives-macosx-1-1.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-macosx-jsr-231.jar b/www/webstart/jogl-natives-macosx-jsr-231.jar
deleted file mode 100644
index a211481bb..000000000
--- a/www/webstart/jogl-natives-macosx-jsr-231.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-macosx.jar b/www/webstart/jogl-natives-macosx.jar
deleted file mode 100644
index 80e919660..000000000
--- a/www/webstart/jogl-natives-macosx.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-solsparc-1-1.jar b/www/webstart/jogl-natives-solsparc-1-1.jar
deleted file mode 100644
index 2e1b4caf0..000000000
--- a/www/webstart/jogl-natives-solsparc-1-1.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-solsparc-jsr-231.jar b/www/webstart/jogl-natives-solsparc-jsr-231.jar
deleted file mode 100644
index e88eafe87..000000000
--- a/www/webstart/jogl-natives-solsparc-jsr-231.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-solsparc.jar b/www/webstart/jogl-natives-solsparc.jar
deleted file mode 100644
index 2e1b4caf0..000000000
--- a/www/webstart/jogl-natives-solsparc.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-solx86-1-1.jar b/www/webstart/jogl-natives-solx86-1-1.jar
deleted file mode 100755
index 28d11ac07..000000000
--- a/www/webstart/jogl-natives-solx86-1-1.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-solx86-jsr-231.jar b/www/webstart/jogl-natives-solx86-jsr-231.jar
deleted file mode 100644
index e0f2eafd0..000000000
--- a/www/webstart/jogl-natives-solx86-jsr-231.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-solx86.jar b/www/webstart/jogl-natives-solx86.jar
deleted file mode 100755
index 28d11ac07..000000000
--- a/www/webstart/jogl-natives-solx86.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-win32-1-1.jar b/www/webstart/jogl-natives-win32-1-1.jar
deleted file mode 100644
index ce819c534..000000000
--- a/www/webstart/jogl-natives-win32-1-1.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-win32-jsr-231.jar b/www/webstart/jogl-natives-win32-jsr-231.jar
deleted file mode 100644
index 7fcb2896d..000000000
--- a/www/webstart/jogl-natives-win32-jsr-231.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl-natives-win32.jar b/www/webstart/jogl-natives-win32.jar
deleted file mode 100644
index ce819c534..000000000
--- a/www/webstart/jogl-natives-win32.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl.jar b/www/webstart/jogl.jar
deleted file mode 100644
index 3dc5d5109..000000000
--- a/www/webstart/jogl.jar
+++ /dev/null
Binary files differ
diff --git a/www/webstart/jogl.jnlp b/www/webstart/jogl.jnlp
deleted file mode 100644
index 70de4bbd9..000000000
--- a/www/webstart/jogl.jnlp
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<jnlp codebase="https://jogl.dev.java.net/webstart/"
- href="jogl.jnlp">
- <information>
- <title>JOGL</title>
- <vendor>Sun Microsystems, Inc.</vendor>
- <homepage href="http://jogl.dev.java.net/"/>
- <description>JOGL</description>
- <description kind="short">Java programming language binding for the OpenGL 3D graphics API.</description>
- <offline-allowed/>
- </information>
- <security>
- <all-permissions/>
- </security>
-
- <resources>
- <jar href="jogl.jar" />
- </resources>
- <resources os="Windows">
- <nativelib href = "jogl-natives-win32.jar" />
- </resources>
- <resources os="SunOS" arch="sparc">
- <nativelib href = "jogl-natives-solsparc.jar" />
- </resources>
- <resources os="SunOS" arch="x86">
- <nativelib href = "jogl-natives-solx86.jar" />
- </resources>
- <resources os="Linux">
- <nativelib href = "jogl-natives-linux.jar" />
- </resources>
- <resources os="Mac OS X">
- <nativelib href = "jogl-natives-macosx.jar" />
- </resources>
-
- <component-desc />
-</jnlp>
diff --git a/www/worldwind.jpg b/www/worldwind.jpg
index 6888b6a7c..6888b6a7c 100755..100644
--- a/www/worldwind.jpg
+++ b/www/worldwind.jpg
Binary files differ