commit 7761702147a955807d56951b95ca03d0fedf6b7e Author: Sven Gothel Date: Tue Jun 25 16:35:52 2013 +0200 Disable TestNewtEventModifiersNewtCanvasSWTAWT: Causes sporadic freezes on Window/Linux .. commit 7cac2c276675e059137aa16b7d856c59f0943dac Author: Sven Gothel Date: Tue Jun 25 16:19:26 2013 +0200 Test NEWT Key Events, TestInitConcurrent0*NEWT: TO 5 -> 3 minutes commit 0bb179669acc812b0580f68b168d0256d07899cb Author: Sven Gothel Date: Tue Jun 25 15:14:04 2013 +0200 Test NEWT Key Events: Add TO of 5 minutes commit 95345e9d4079c5c45d8009c9a2c1b7fb9ef96550 Author: Sven Gothel Date: Tue Jun 25 13:53:27 2013 +0200 TestInitConcurrent0*NEWT: Add TO of 5 minutes commit 7fe9adcd1e8649dca84d180102ed14f55a9963cb Author: Sven Gothel Date: Tue Jun 25 12:26:04 2013 +0200 TestFocus02SwingAWTRobot: Fix Java7 'changed behavior': Relax focus traversal validation checks. commit d3e5d510e30c207654301f60e2f7261e289d9e63 Author: Sven Gothel Date: Tue Jun 25 09:33:42 2013 +0200 TestFocus02SwingAWTRobot: Fix Java7 'changed behavior': Relax focus traversal validation checks. commit 7e0e2ea04e619b2731c55fa86f1af42df920de65 Author: Sven Gothel Date: Tue Jun 25 09:33:01 2013 +0200 AWTRobotUtil.*KeyPress/Release: Remove waitForIdle(robot), but call per use case instead. commit cc64ad2b1f7904af4e7bd27e927e0bb331db782b Author: Sven Gothel Date: Tue Jun 25 07:04:17 2013 +0200 NEWT WindowImpl/GLWindow: @ JVM Shutdown, force stop animation thread w/o blocking. commit a584e5dd4b40afec3cc04e1ce4abe3eb2f86e04c Author: Sven Gothel Date: Tue Jun 25 07:02:48 2013 +0200 NEWT: EDTUtil.invokeStop(..) gets 'wait' argument, allowing non-blocking shutdown. DisplayImpl.shutdownAll(): Don't block. commit 415f5c29ffae7cf5a26737da38e31cb84b652539 Author: Sven Gothel Date: Mon Jun 24 19:47:06 2013 +0200 NEWT: Don't invoke external keyboardFocusHandler for auto-repeat keys (NewtCanvasAWT, ..) .. otherwise an auto repeated key would cause fast focus traversal, not intended. commit 45952a0fa4c30e9fcd49414581e4c81688c50e48 Author: Sven Gothel Date: Mon Jun 24 19:30:06 2013 +0200 TestFocus0[12]SwingAWTRobot: Fix Java7 'changed behavior': Relax focus traversal validation checks. - Remove Frame lost detection - Allow to have NEWT and it's NewtCanvasAWT claiming to have the focus commit 9a033994da76e9998ff20d875658b953e70bf664 Author: Sven Gothel Date: Mon Jun 24 19:28:49 2013 +0200 Tests NEWTKeyAdapter: Fix log string commit 0cb4baed987223893d7f68e5f5cbb96987a39cf6 Author: Sven Gothel Date: Mon Jun 24 19:28:05 2013 +0200 NEWT Windows WindowDriver: Suppress LOCK_SURFACE_CHANGED, no semantics in GLDrawable on Windows. FIXME: Validate against EGL surface creation: ANGLE uses HWND -> fine! commit 01d2f02624e6e6c6877fbf3eb5b830f49c3e06af Author: Sven Gothel Date: Mon Jun 24 17:12:02 2013 +0200 Apply workaround of Java7 AWT Robot.waitForIdle()/EDT bug for all Robot.waitForIdle() calls. See commit 8f3b2a4cc14be60681a7bfae0507655cc5702836 commit 8f3b2a4cc14be60681a7bfae0507655cc5702836 Author: Sven Gothel Date: Mon Jun 24 15:50:27 2013 +0200 Workaroung a Java7 AWT EDT/Robot bug: Validate whether AWT-EDT is alive before certain robot ops. We have experienced that w/o utilizing AWT components, i.e. NEWT tests, the AWT-EDT 'sometimes' dies. Performing AWT robot's waitForIdle() in this situation causes a deadlock, since the call will never complete it's EventQueue.invokeAndWait() call. While analyzing this issue, we created a test tool whether the the AWT EDT is still alive. This test issues EventQueue.invokeLater( .. { flag=true; } ); and polls up until 2s for the result. Turns out that the sporadic AWT-EDT issues are solved by this test itself, i.e. it probably cause it to be reinstated. (?!) We have to observe this behavior. Another proof that quantum mechanic rules also apply in the macro cosmos :) commit c27157bf7fa9776b0f212c2ccfcf80c4e734eedc Author: Sven Gothel Date: Mon Jun 24 11:53:59 2013 +0200 UITestCase: Increase SINGLE_INSTANCE_LOCK_TO from 3 to 6 minutes! commit 835cea627f80d8f8a851514734f53e6336d9d6d9 Author: Sven Gothel Date: Mon Jun 24 09:48:56 2013 +0200 TestSWTAccessor03AWTGLn: Fix SWT deadlock on Java7/Windows: Must perform AWT frame close on current thread .. commit f857d3f86be221fb5f8488a8419c4cac8d65fc89 Author: Sven Gothel Date: Mon Jun 24 09:48:11 2013 +0200 scripts: osx make/test java7/6 fixes commit 00f82fde560306891823a1273baf50264dca3d05 Author: Sven Gothel Date: Mon Jun 24 07:00:42 2013 +0200 TestGearsES2GLJPanel*: Use Gears (GL 1 based) if using bitmap - On Windows GDI would be returned and neither ES1 nor ES2 features are available. Fixes commit 3e528a69db38711c789a08d1d7335e5a7739f780 commit 3e528a69db38711c789a08d1d7335e5a7739f780 Author: Sven Gothel Date: Mon Jun 24 06:53:05 2013 +0200 TestGearsES2GLJPanel*: Use GearsES1 is using bitmap - On Windows GDI would be returned! We still have to solve the GL renderer selection / probing problem, i.e. in such cases we don't know before context realization which GL renderer we actually receive. commit e5dd5757379353a9dd10248136afef65c33f6420 Author: Sven Gothel Date: Mon Jun 24 06:51:16 2013 +0200 GearsES2/RedSquareES2: Detect !GLSL and don't attempt to render in such case. commit 62f9525a9caba51fc4484c2ab47d64b516dc9d43 Author: Sven Gothel Date: Mon Jun 24 06:50:40 2013 +0200 Refine cb7118fc875b6722803e4b11d5681671962a8d3a: Unify get next/prev focus component method. commit 85f4b824dcf1ff6ebb658ffd242eea2f9d8cd087 Author: Sven Gothel Date: Mon Jun 24 06:17:46 2013 +0200 Tests: Remove subsequent exceptions .. (not original issue, but annoying while analyzing) commit cb7118fc875b6722803e4b11d5681671962a8d3a Author: Sven Gothel Date: Sun Jun 23 20:15:38 2013 +0200 Fix NewtCanvasAWT focus traversal for Java7 (Take 2): Commit 70bf3a4ec44504b86294a332255aaae8d2e86bf4 was not sufficient. Commit 70bf3a4ec44504b86294a332255aaae8d2e86bf4 did not work out on Windows. Solution now gathers the next or previous 'to be focused' component, using the FocusTraversalPolicy of the visible/focusable/enabled container. Then we simply request it's focus. Works w/ Java7 on Linux and Windows. commit 70bf3a4ec44504b86294a332255aaae8d2e86bf4 Author: Sven Gothel Date: Sun Jun 23 18:55:21 2013 +0200 Fix NewtCanvasAWT focus traversal for Java7: All unit tests fail w/ Java7, i.e. AWT Component's transferFocus() does nothing if component does not hold the focus. .. this seems to be violating the AWT 'spec' .. however. Workaround: Request focus before transfering it to the next/previous element. commit 698834f062759c7fae342a84af2953e9550c0078 Author: Sven Gothel Date: Sun Jun 23 16:21:02 2013 +0200 GLEmitter: Better use of priviledged block in generated GL*ProcAddressTable's isFunctionAvailableImpl(..), getAddressFor(..) commit 305cdc83f78a5ac63d5ca1e56538a1eade62bb23 Author: Sven Gothel Date: Sun Jun 23 15:27:48 2013 +0200 Fix Regression of 889ba9488ca07b59fdcc378642a2dc20676d69a3: GLDebugMessageHandler GL Profile criteria for availability is wrong commit 2d32b056c7b1b6b3d071d79fb4c2d4e9113b59d5 Author: Sven Gothel Date: Sun Jun 23 01:21:30 2013 +0200 Fix Bug 761 (part 2/2): NEWT registers one customShutdownHook @ NativeWindowFactory.shutdownHook head, allowing proper resource cleanup. 1 WindowImpl.shutdownAll(): - For all instances: - mark invalid (causes any user thread to disregard the window) 2 ScreenImpl.shutdownAll(): - Removed own shutdown-hook! - For all instances: - Reset ScreenMonitorState 3 DisplayImpl.shutdownAll(): - For all instances: - Remove EDT - closeNativeImpl Manually tested on X11 w/ NV and ATI Catalyst (fglrx) - DFLAGS="-Djogl.debug.GLDrawable -Dnativewindow.debug.X11Util -Dnativewindow.debug.NativeWindow -Dnewt.debug.Display -Dnewt.debug.Screen -Dnewt.debug.Window" - java $DFLAGS com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT -time 2000 -sysExit testExit - valid arguments for sysExit: testExit, testError, displayExit, displayError commit 41c626d8a27981e694b3b728a9a2f2bc8def939d Author: Sven Gothel Date: Sun Jun 23 01:10:04 2013 +0200 Fix Bug 761 (part 1/2): Move GLDrawableFactory.shutdownHook -> NativeWindowFactory.shutdownHook, the latter handles customShutdownHooks for NativeWindow, JOGL and NEWT. Unifying our shutdown mechanism is required to provide a controlled shutdown sequence. NativeWindowFactory is chosen to be the new central entry point, since it is the lowest denominator (common module). - Move GLDrawableFactory.shutdownHook -> NativeWindowFactory.shutdownHook Reverse the shutdown dependency for clarity and availability to all modules, i.e. NEWT may not know about JOGL. Remove the 'gamma' shutdown hook, instead simply call GLDrawableFactoryImpl.resetDisplayGamma() before destroy. NativeWindowFactory.shutdownHook handles customShutdownHooks for NativeWindow, JOGL and NEWT - Modules can register their shutdown runnable at head or tail of list. - Allows controlled shutdown across all modules. commit e5df5210e059ef597c1c05942cf7dcc0327730cd Author: Sven Gothel Date: Sun Jun 23 01:02:44 2013 +0200 GLWindow: Mention GLStateKeeper's GL state preservation in API doc commit e2c641bfbf9c2796b02edd3ef15444ce58b42be0 Author: Sven Gothel Date: Sun Jun 23 01:01:23 2013 +0200 NEWT/X11: Proper static initSingleton() sequence. commit 455c305ef9ca3db975de589dc4b9d078f2b5cc7a Author: Sven Gothel Date: Sun Jun 23 01:00:52 2013 +0200 X11Util: Fix comment on markAllDisplaysUnclosable semantics, add 'final', reorder globalLock/isJVMShuttingDown branch/sync commit cdeee16cdb14a6977e6c2344ba16a2d9a02759ce Author: Sven Gothel Date: Sun Jun 23 00:56:00 2013 +0200 AnimatorBase.setModeBits(..): Only issue initImpl() if required - and throw 'is started' exception in such case; Cleanup brackets. commit a053732720628d57d38bda401053833259bf1657 Author: Juan Camilo Prada Date: Fri Jun 21 10:48:17 2013 +0200 Fix Bug 759: Add quirk GLNonCompliant for Mesa AMD GL >= 3.1 renderer. commit 4b7833fab73166338a3a2f27920a7b28a3e5e30f Author: Sven Gothel Date: Fri Jun 21 10:14:15 2013 +0200 Fix applet html pages (title) commit 7ae47a845c625b9677b5879831d87a14d8e57311 Author: Sven Gothel Date: Fri Jun 21 07:38:04 2013 +0200 GL*ProcAddressTable: Fix regressions: getField(..) -> getDeclaredField(..), incl. access check; Move getAddressFor() from ctx -> private dbg-handler (sec); FFMPEGMediaPlayer: Missed fetching func-ptr 'glTexSubImage2D'. commit 889ba9488ca07b59fdcc378642a2dc20676d69a3 Author: Sven Gothel Date: Fri Jun 21 04:39:21 2013 +0200 Security: Apply security changes from GlueGen GlueGen related commits - 23341a2df2d2ea36784a16fa1db8bc7385351a12 - 2d8e25398e929f553c4524e9c57f083d90ba4e08 - 8cabcd2de8b46c42dffcaaf46ccc2dc4d092ebba - f69831574d4927d03d40c330d0b047d8c89622a4 - eb842815498f5926828b49c48fffce22fc9586a2 commit 9043224ae336111982498005e88672488cb0bd7a Author: Sven Gothel Date: Fri Jun 21 04:32:49 2013 +0200 GL ProcAddressTable: Align w/ GlueGen commit f69831574d4927d03d40c330d0b047d8c89622a4 (checkAllLinkPermission() ..) commit 895ba533b0db32962881e4395457ed6b0ad3b9b8 Author: Sven Gothel Date: Fri Jun 21 04:18:45 2013 +0200 Scripts: Fix new windows single unit test scripts .. commit dc6b3b50f83bf8ed114f509a3d88855f1ff9e54a Author: Sven Gothel Date: Fri Jun 21 03:50:41 2013 +0200 Bug 758: Fix scripts and ant build files to work w/ Java7 (default now) producing Java6 bytecode ; Apply JAR Manifest tags: Sealed, Permissions and Codebase commit 5b77c7f345d1e36c152d70982db0e022be6cfa2a Author: Sven Gothel Date: Wed Jun 19 04:47:26 2013 +0200 Bug 757 (URL / URI conversion for file scheme, encoded path): Make certain core scripts capable of allowing a SPACE character. commit af426c53f818a8dac39e43b441dde261aa360536 Author: Sven Gothel Date: Tue Jun 18 19:48:51 2013 +0200 Add optional JOAL dependency, enabling JOAL usage for our 'av' package. Note: May be relocated to external project later! Assumption: gluegen/ joal/ jogl/ For OpenAL / JOAL code: - use the package jogamp.opengl.openal (like jogamp.opengl.android) - will be build _before_ the other 2nd pass java files - do not expose OpenAL/JOAL APIs, if being used by other packages, since only this package is being compiled w/ JOAL jar files! commit de67cde91cb99e3a1a3b8182b119671d112c553b Author: Sven Gothel Date: Tue Jun 18 04:06:27 2013 +0200 Refine 893cf0c8c32edf231dbf418d45d3181532d2402b: Partial revert and issue forceRelayout at end of applet.start(); Cleanup AWTKeyAdapter. Refine 893cf0c8c32edf231dbf418d45d3181532d2402b: Partial revert and issue forceRelayout at end of applet.start(); - Seems the workaround of OSX CALayer positioning bug is timing dependent, i.e. stopped working when disabled DEBUG output. - Move NewtCanvasAWT creation and attachment back to init() - Issue extra forceRelayout (if OSX) at end of start() .. works 'most of the time'. Cleanup AWTKeyAdapter: Adapt code style of keyPressed() to keyReleased(). commit e3beec5a0b4f696e458e8cc1d653ce9dc628e137 Author: Sven Gothel Date: Tue Jun 18 04:01:29 2013 +0200 NewtCanvasAWT: Issue 'setFocusable(..)' at configureNewtChild(..) commit 893cf0c8c32edf231dbf418d45d3181532d2402b Author: Sven Gothel Date: Tue Jun 18 03:10:16 2013 +0200 JOGLNewtApplet1Run: Defer 'newtCanvasAWT' creation and attachment to applet.start() (only once), working around 'OS X' CALayer positioning bug. The NewtCanvasAWT workaround for the 'OS X' CALayer positioning bug(*) may only work if parent is not only dislayable, but also visible. (*): Workaround resizes the component 2x, forcing a relayout. ++ RequestFocus after setVisibile(true). +++ Clear references to glWindow, newtCanvasAWT @ destroy. commit 6944d3485ad005c6cd69a3122479f1fbaef26dfc Author: Sven Gothel Date: Tue Jun 18 01:44:39 2013 +0200 GLDynamicLibraryBundleInfo.shallLinkGlobal(): Defaults to 'true' now, allowing to remove specialized values. - Windows always used global - The OpenGL library is always available by all processes system wide. - Tested on OSX (was using local, previously). commit d846b04928ecfcfb319e75d7ed114d357edbeb89 Author: Sven Gothel Date: Mon Jun 17 13:16:40 2013 +0200 Fix Bug 735: GLAutoDrawable must issue glViewport(..) even w/o GLEventListener ; Optimize GLDrawableHelper's glViewportCall(..) GLAutoDrawable must issue glViewport(..) even w/o GLEventListener - Same behavior w/ or w/o GLEventListener requires to issue glViewport, always. Optimize GLDrawableHelper's glViewportCall(..) - 'private void init(..)' receives 'setViewport' argument to be passed to 'private void reshape(..)' allowing to only the the viewport once @ 'public void init(..)' and display. commit f2182cfbf4cf77ba3f53b5b3e1c53e9dd42691a5 Author: Sven Gothel Date: Mon Jun 17 12:59:24 2013 +0200 Fix regression of 31e72d2f2d953352b2a8c83368039ecca8139d49: Modifier SHIFT needs to be recognized (-> horiz. scroll) commit 343c3b3d0204c678156ce3b1a0a667bf90541c18 Author: Sven Gothel Date: Mon Jun 17 12:28:09 2013 +0200 Scripts: Adapt finding gluegen .. commit c7e53e52b03afbaa6fe02a2ee5a4c5b6e5ed9f5a Author: Sven Gothel Date: Mon Jun 17 11:19:05 2013 +0200 Fix TestNewtKeyEventAutoRepeatAWT (Bug 688): Reduce head/tail event check to 2 events (Windows can't produce AR) commit bdfb74818aa224bd96a15f232f417e921e0d8f63 Author: Sven Gothel Date: Mon Jun 17 10:00:23 2013 +0200 Fix Bug 688: Removal of NEWT KeyEvent.EVENT_KEY_TYPED and KeyListener.keyTyped(KeyEvent) - Part2: API Documentation and Comments commit 8b33170ec6fd3f215976875cb66d746fa1b48f61 Author: Sven Gothel Date: Mon Jun 17 09:01:23 2013 +0200 Fix Bug 688: Removal of NEWT KeyEvent.EVENT_KEY_TYPED and KeyListener.keyTyped(KeyEvent) commit c24f44036971bf58b5c47a6e1f7d9f186c67e789 Author: Sven Gothel Date: Mon Jun 17 06:21:43 2013 +0200 Bug 735: Fix comment in test, since mystery is solved :) commit 24b63b18e6ca3f657350d6c80e4914eadce60164 Author: Sven Gothel Date: Mon Jun 17 06:19:57 2013 +0200 Solve Bug 735 Mystery: glViewport(..) was missing - duh :) commit 809201c2806485fb6cd0195d43ccf43c343d591e Author: Sven Gothel Date: Mon Jun 17 05:05:52 2013 +0200 Bug735: Bug735Inv0AppletAWT/Bug735Inv1AppletAWT tests: Use shader customization, no Clear required, .. (still don't work w/ CALAyer) commit d7e2cb6fdec200d25a9189f7951c5f94c26a1ce4 Author: Sven Gothel Date: Mon Jun 17 04:39:58 2013 +0200 Fix Bug 753: Stuttering caused by lack of GL resource synchronization between Java GL- and CALayer thread ; Simplify / Fix waitUntilRenderSignal(). Stuttering caused by lack of GL resource synchronization between Java GL- and CALayer thread + // Required(?) to finish previous GL rendering to give CALayer proper result, + // i.e. synchronize both threads each w/ their GLContext sharing same resources. + // + // FIXME: IMHO this synchronization should be implicitly performed via 'CGL.flushBuffer(contextHandle)' above, + // in case this will be determined a driver bug - use a QUIRK entry in GLRendererQuirks! + gl.glFinish(); Simplify / Fix waitUntilRenderSignal() - remove loop and 'ready' condition -> nonsense - if too later, i.e. lastWaitTime+TO < now, use now+TO as max. vsync waiting time Bug735 Tests: - Make vsync, wait and ECT (exclusive context thread) configurable via main args. - Inv2*, Inv3* and Inv4*: Fluent Animation - Works w/ ECT commit c3dc7fbdb9437f773146926b41003df32ba756d1 Author: Sven Gothel Date: Mon Jun 17 04:09:52 2013 +0200 timespec.c/h: Add 'long timespec_microseconds(..)' commit 92fce556bf9c3d8f1e99bf79f48631d58829c523 Author: Sven Gothel Date: Mon Jun 17 04:09:14 2013 +0200 GLFBODrawableImpl: Fix swap criteria, i.e. don't swap in contextMadeCurrent(false) if already swapped by swapBuffersImpl(..), but always swap in swapBuffersImpl(..) if ctx is current and associated. commit 409d23cc5434f192e2c38dc172b46a05c48ffe0a Author: Sven Gothel Date: Sun Jun 16 18:10:58 2013 +0200 ES3.0 GLContext: Handle ES3.0 GLSL Version Number - Static detection and 'es' suffix. commit 05d8a9490497413df11fd2faf07e34d648130966 Author: Sven Gothel Date: Sun Jun 16 04:31:02 2013 +0200 Bug 735: Bug735Inv4AWT on Java7 is also stuttering! commit 4fe6cf06f74085cc90d1f5b003fd717234d43ced Author: Sven Gothel Date: Sun Jun 16 04:14:56 2013 +0200 Bug 735: Adding Andres test cases for analysis. OSX exposes diff. odd behaviors - See BugXYZ test cases. commit ea85d60b854e2b6720dc0ef2b43c783074a66abf Author: Sven Gothel Date: Sun Jun 16 04:04:55 2013 +0200 MacOSXCGLContext: Use final qualifier for CGL.CGLLockContext(cglCtx) result. commit 646a1f18c6f7e755f6ae3cbb3f2282b1b1bc9e5f Author: Sven Gothel Date: Sun Jun 16 04:04:29 2013 +0200 GLDrawableHelper Perf.: Branch into execGLRunnables(..) only if glRunnables.size()>0 commit 2d83e346b1e737f9efc0e782ddbd2a9be6a4cd35 Author: Sven Gothel Date: Sat Jun 15 08:14:19 2013 +0200 AWTGraphicsConfiguration: Allow null capsRequested; NewtCanvasAWT: Avoid NPE @ addNotify() w/o newtChild commit a83aea49479818a1e5037d11a3e7f7d1f019c939 Author: Sven Gothel Date: Fri Jun 14 17:51:45 2013 +0200 Fix Bug 745: NPE - QTT definition shall be allowd to _follow_ SOF (frame) - Reference QTT via QTT[] passed to frame, validate after parsing. commit 33b4f95581938ebbb5af4c37a1c5c2b5ee968f76 Author: Sven Gothel Date: Thu Jun 13 21:27:19 2013 +0200 Mitigate Bug 728: Java Web Start Shutdown: Exception "java.lang.IllegalStateException: zip file closed" on OSX 10.8.3 and Java 1.7.0_17 OS version: Mac OS X 10.8.3 Java version: 1.7.0_17 Catch any occuring exception at GLDrawable shutdown, report them briefly and verbose w/ DEBUG enabled. commit 68887e3a24306fd3ad6ab60eb69778aa2cbe4760 Author: Sven Gothel Date: Thu Jun 13 20:38:13 2013 +0200 Android SDK changes: Add /build-tools/17.0.0 to PATH commit 44469633e779d005e1e4a811fddd2c4a40143362 Author: Sven Gothel Date: Thu Jun 13 12:16:42 2013 +0200 TestRedSquareES2NEWT: Cleanup commit af097fb2d5d983eb703d01f56e471a64d5d2657c Author: Sven Gothel Date: Thu Jun 13 12:16:01 2013 +0200 TestX11DefaultDisplay: Validate the chosen default device, test only one GLDefault/RedSquareES1; Tested w/ Xvnc4 + build-in Mesa 4.0.4 commit e44dc0c2c9c363cd97e9892fcf42562b2944a4cd Author: Maik Riechert Date: Wed Jun 12 22:58:48 2013 +0200 added unit test for nativewindow.x11.display.default system property commit f21f4d8e0f125f6c054b9f07e707fdf900fe4b35 Author: Maik Riechert Date: Wed Jun 12 22:57:54 2013 +0200 Support specifying the X11 default display with a system property Usually, the environment variable DISPLAY is used to define the default display under X11. There are cases where the default display has to be defined or overridden programmatically. For those cases, the new system property nativewindow.x11.display.default can be used (as environment variables can't be changed in Java). Its semantics are identical to the DISPLAY environment variable. commit 19225a21d8d2a2e09f166f8f1f0411f3f934b9a0 Author: Sven Gothel Date: Wed Jun 12 17:31:29 2013 +0200 Fix my sloppy commit f50caa5241b5eef286e8c10b74b5297e5821da2b: Didn't intend to take out the commented out 'final', but to enable the qualifier. Duh! Thank's to Harvey (again) for catching my odd work! commit a446bfbb25397cf5876e766d0bb52cbaaa5f8e2f Author: Sven Gothel Date: Wed Jun 12 12:43:22 2013 +0200 Bug 733: Refine Test case: warp-random at display, and warp-center at mouse-leave. commit 8ff185ef62c832408963f30a2b4875955d7ae650 Author: Julien Gouesse Date: Sat May 11 16:11:48 2013 +0200 Adds a unit test for GLWindow.warpPointer(int,int) commit 85b96a891bb81776faf0a6dd1783443a045f74fb Author: Sven Gothel Date: Wed Jun 12 12:15:55 2013 +0200 VectorUtil, Quaternion: Use 'final' qualifier if possible commit aed9662552503b0a2fa67bcddbb7063b16d003d5 Author: Sven Gothel Date: Wed Jun 12 11:58:55 2013 +0200 Fix Bug 750: Leaked X11 ColorMap for each created X11 Window in NativeWindow (dummy) and NEWT Free the colormap at WindowDestroy, which we have created at WindowCreate w/ AllocNone. Due to the fact we used 'AllocNone' the leak is minimal though .. commit f72a2d6b9c6657011da2407b2a8c5b2197c0d31d Author: Sven Gothel Date: Wed Jun 12 11:13:38 2013 +0200 FontConstructor: Hide the exposed strings and add them in class API doc to minimize footprint. Review of Harvey. Since accessing the static final exposed strings would trigger static initialization, setting the properties this way would not work anyways (if not inlined ..). Well. commit f50caa5241b5eef286e8c10b74b5297e5821da2b Author: Sven Gothel Date: Wed Jun 12 11:05:40 2013 +0200 GLContext: Make 'deviceVersion' fields final. Reviewed by Harvey. commit 05eef46e33f41f5c234ffb1563fd8f641208fe85 Author: Sven Gothel Date: Tue Jun 11 16:29:48 2013 +0200 Adapt to GlueGen commit 1a01dce6c42b398cdd68d405828774a3ab366456 commit ee3c6d807f24fafc6a79da4d60442f62f6065d39 Author: Sven Gothel Date: Sun Jun 9 18:50:39 2013 +0200 HowTo Build: Ubuntu -> Debian commit 50fc55b42f791840ce1ddee943351ccc61285a84 Author: Sven Gothel Date: Sun Jun 9 08:50:06 2013 +0200 Fix Bug 748 - PMVMatrix gluProject and gluUnProject broken w/ backingArray (default) ; Also: Use FloatUtil in-place multMatrixf. PMVMatrix gluProject(..) and gluUnProject(..) don't pass their position (offset) to the multMatrixf operation - even though they are sliced. The API doc actually emphasizes this. commit 81a4f175e3065ea281139d08cc79bcdfb4912ee7 Author: Sven Gothel Date: Sun Jun 9 08:45:08 2013 +0200 FloatUtil: Add in-place multMatrixf (since we mult line by line, we can multiply in place). Will be used by PMVMatrix. commit e2b443a61cc9dd3efcaf685163ef9290638bf18e Author: Sven Gothel Date: Sun Jun 9 06:12:33 2013 +0200 Adapt to Gluegen's IOUtil change commit b98825eb7cfb61aead4a7dff57471cd2d2c26823 commit 1c1ffed31548094cf7afbb4c83b0cb627ae3a1ad Author: Sven Gothel Date: Sun Jun 9 06:11:33 2013 +0200 Bug 747: Allow usage of IdentityHashMap w/ keys: AbstractGraphicsDevice.getUniqueID() and GLContext.getDeviceVersionAvailableKey() .. both value classes unique, long lived and rare. commit 70087b3067df7bfe6612af7388f8e86f77b150b4 Author: Sven Gothel Date: Sun Jun 9 06:08:19 2013 +0200 ScreenMode Unit Tests: Add wait for screen destroy (off-thread) commit a60e3b1a894c53abe7ab3a19f1f30cfa96886464 Author: Sven Gothel Date: Sun Jun 9 06:07:15 2013 +0200 Unit Tests: Group *math* tests in own test package commit a368548b20321ea5cdace6cc495e632ca9d5c99c Author: Petr Skramovsky Date: Tue Jun 4 22:21:36 2013 +0200 Quaternion.java : fixed not clear assignment commit 08bfa5797069cb5757620e74b8befaa079d04ddb Author: Petr Skramovsky Date: Sun Jun 2 21:14:45 2013 +0200 new method for vector multiplication, new copy constructor commit 0a4defdfe478c3e231f3b1255cba6989aa2c489e Author: Petr Skramovsky Date: Sun Jun 2 21:09:42 2013 +0200 fixed isIdentity method, deprecated isEmpty method (quaternion doesn't have such a property + method do same thing as isIdentity), new setIdentity method, default constructor sets this quaternion to identity, new fromAxis method/costructor commit eaf15f8020bdd97f7d919721c9cc74eb72e6c493 Author: Petr Skramovsky Date: Sun Jun 2 20:48:21 2013 +0200 removed unnecessary castings, removed unnecessary methods for vector operations changed to VectorUtil instead commit f5fe8439f52acaf4bc2afe04531f1aa8ca30390b Author: Petr Skramovsky Date: Sun Jun 2 20:41:32 2013 +0200 reformatted to same style commit cbd7bf1d65a253381b0775d57c0c949c75aef008 Author: Sven Gothel Date: Fri May 31 11:16:01 2013 +0200 GLVersionNumber.createVendorVersion(): Only test match result and potentially continue matching if having a pattern-match (don't loop for-ever). commit ef8949d4bdfb21bbe423acc661affaf59369f859 Author: Sven Gothel Date: Fri May 31 06:52:32 2013 +0200 Complete/Fix GLVersionNumber (81afec4e963ac4372dc2b604d6f91237b81ee6f2): Set 'valid' flag, always set major/minor and strEnd. Also: Add negative tests to unit test. commit 81afec4e963ac4372dc2b604d6f91237b81ee6f2 Author: Sven Gothel Date: Fri May 31 06:34:13 2013 +0200 GLVersionNumber: Fix vendor version parser; Adapt to GlueGen commit 959d6d83ec26152343d538287c02eeebf0dcf238 Adapt to GlueGen commit 959d6d83ec26152343d538287c02eeebf0dcf238: - Use only RegExp and cache default (no wrapped whitespace tokenizer) - String match: Store end-of-match and flag defined components. - Remove manual parsing, utilize VersionNumber - No need to look further for 'updated' GL version, (probably the vendor version), since we utilize the ARB version number as set at creation. Fix vendor version parser: - Cut off GL version part of versionString (fixes case where GL version was interpreted as vendor version) - Loop through remaining string until a valid version number w/ major.minor has been found commit f650e6b37407aaa3ef6c16e7daf6423103b94ddf Author: Sven Gothel Date: Sat May 18 05:41:27 2013 +0200 Fix regression of commit b2802021acf8aa9b363ebef383c8dc8c8079ffa4 (Bug 711): varying in/out mapping is different in vertex/fragment shader! Vertex shader: varying -> out Fragemnt shader: varying -> in NV GLSL compiler ignored in/out direction, where ATI GLSL compiler failed (could not find gcu_Weight, due to dead code). commit 6655194e6d206807b8cf1a14cffb005dde673e26 Author: Sven Gothel Date: Sat May 18 02:50:22 2013 +0200 Unit Test: Remove unused import commit 6e08b6f011335ff4a9f4f59b271d97aec4ba30d7 Author: Sven Gothel Date: Sat May 18 02:48:21 2013 +0200 Fix Unit Tests Exclusion " if( !GLProfile.isAvailable(GLProfile.GL*) ) { .. } ": Add missing return statement to abort test. commit 979e8375e59050d3c7a37ba4902eb8b789813831 Author: Petr Skramovsky Date: Fri May 17 09:09:12 2013 +0200 Fix Bug 736: Add GL.GL_UNSIGNED_INT and GL2ES2.GL_INT case in GLArrayDataWrapper.getBufferClass() commit 9fbcc16eb37b35f4f0f02e74be6ab14169e3bad0 Author: Sven Gothel Date: Fri May 17 08:48:57 2013 +0200 GLPixelBuffer.dispose(): Set diposed:=true to allow isValid() to work properly; GLJPanel: Rely on GLPixelBuffer.requiresNewBuffer(..) for each frame, don't use local pixelBufferCheckSize (buggy w/ singleton) commit 1cc44101bd4f44407929c686d3c6e00d36793495 Author: Sven Gothel Date: Fri May 17 08:44:40 2013 +0200 JOGL GLSL ShaderProgram/State: Release of an unlinked ShaderProgram shall not throw an exception -> avoid calling useProgram(.., false). commit aef87b5db07d6b3f556d72ac7492fa0fba0d2de0 Author: Sven Gothel Date: Fri May 17 07:57:50 2013 +0200 GLSL version determination: Use static GLSL version mapping in case of GLES - Mesa 9.1* fails otherwise since it supports ES3/300 which is returned. commit b2802021acf8aa9b363ebef383c8dc8c8079ffa4 Author: Sven Gothel Date: Fri May 17 07:55:59 2013 +0200 Fix Bug 711: Align Graphs's Curve Shader programmatically to used GL/GLSL version, following all other internal GLSL usage utilizing ShaderCode. commit 33abeb8097a8f80acd1a4ce94b4866e5dc41f0c0 Author: Sven Gothel Date: Fri May 17 04:52:32 2013 +0200 Fix Bug 737: Add shader default precision for GLSL [1.30 .. 1.50[ - See GLSL Spec [1.30 - 1.40]. commit 31e72d2f2d953352b2a8c83368039ecca8139d49 Author: Sven Gothel Date: Thu May 16 23:53:09 2013 +0200 NEWT: MouseEvent Ctor: Use proper float[] rotationXYZ and float rotationScale arguments. commit 86a5460c5052cdab7b9f6294c46a0b4e30dfa260 Author: Sven Gothel Date: Thu May 16 21:33:25 2013 +0200 Fix Bug 723: Remove VK_KP_ numpad key-codes, use general VK_ key-codes; Respect numpad printable keys; Use keySym for numpad if possible. - KeyEvent keyCode/keySym values re-ordered! - Remove VK_KP_ numpad key-codes, use general VK_ key-codes. Numpad cursor keys are not supported on some platforms (Windows), or not configured on most X11 configurations. - Respect numpad printable keys, i.e. don't treat them as non-printable. - Use keySym for numpad if possible. Numpad keys require modifiers, hence X11 and Windows shall return keySym. commit 890dabf77593732bd9833350b441a37c60f74d45 Author: Sven Gothel Date: Thu May 9 04:49:29 2013 +0200 Fix Bug 731: GLJPanel: Access global GLPixelBuffer via SingletonGLPixelBufferProvider, if provided - releasing prev. smaller GLPixelBuffer after resize. commit 5e0a5049d873b5896553ee530562c28ffd3fbe0c Author: Sven Gothel Date: Thu May 9 02:57:09 2013 +0200 Fix NEWT MultiMonitor Regression: Use case w/o attached monitor, and NPE (Cache) in ScreenImpl.getVirtualMonitorDevice(..). W/ RandR13, we can have a case of an Output/CRT w/o valid modes, indicating a switched off or detached monitor. ScreenImpl.getVirtualMonitorDevice(..) requires a Cache .. due to MonitorModeProps.streamInMonitorDevice(..) commit ed732cddbcb979062c56e9c93534a232aaa7fa20 Author: Sven Gothel Date: Wed May 8 23:39:17 2013 +0200 Fix regression of commit 0a7bf77b8c0765f8a53dc72a8edab8e0496938ff - GLReadBufferUtil's GLPixelBuffer* usage. Ref GLJPanel SingleAWTGLPixelBufferProvider's screenshots. Ref GLJPanel SingleAWTGLPixelBufferProvider's screenshots: commit 0a7bf77b8c0765f8a53dc72a8edab8e0496938ff Author: Sven Gothel Date: Wed May 8 22:57:17 2013 +0200 Refactor: TextureData's PixelAttributes/PixelBufferProvider -> GLPixelBuffer/.. and enhance usage; GLJPanel: Use GLPixelBuffer* API and SingleAWTGLPixelBufferProvider if possible. Refactor: TextureData's PixelAttributes/PixelBufferProvider -> GLPixelBuffer/.. and enhance usage - GLPixelBuffer, GLPixelAttributes and GLPixelBufferProvider have potential for wider audience, hence extract them to package 'com.jogamp.opengl.util'. - Using GLPixelBuffer, shall attempt to use pack/unpack row-stride, i.e. GL2GL3.GL_PACK_ROW_LENGTH, or GL2GL3.GL_UNPACK_ROW_LENGTH. See GLReadBufferUtil and GLJPanel - AWTGLPixelBuffer*: Attribute 'row-stride' allows reusing a bigger buffer than requested. GLJPanel: Use GLPixelBuffer* API and SingleAWTGLPixelBufferProvider if possible. - Use GLPixelBuffer API to remove redundancies - Attempts to use SingleAWTGLPixelBufferProvider to save JVM/CPU heap space for BuffereImage and IntBbuffer (readBack) Added unit new test demonstrating multiple overlapping GLJPanels reusing (or not) a singlton SingleAWTGLPixelBufferProvider. commit e6a234edb1318bb38f6ab65d96518471d0c7fd68 Author: Sven Gothel Date: Wed May 8 22:48:04 2013 +0200 GLBuffers: Extract common methods: bytesPerPixel(..) and componentCount(.). Better namings for vars, i.e. compCount, .. etc commit 66e3917da774b723007811e66d95f37b1ffffc97 Author: Sven Gothel Date: Wed May 8 05:49:41 2013 +0200 Add TestGearsGLJPanelAWT, i.e. multiple JPanels w/ GLJPanel running GearsES2 in their own color. Note: JComponent will introduce flickering if using opaque rendering mode! commit ff08ebae2f6ed8788d481f4a21fc7a07a75733ee Author: Sven Gothel Date: Wed May 8 03:49:55 2013 +0200 GLJPanel: Use PixelBufferProvider AWTPixelBufferProviderInt; PixelBufferProvider: Add 'dispose()' to interface. Transition reusing AWT specific PixelBufferProvider to allow a later user provided PixelBufferProvider. commit da8717097df2afba3fc7e9ef648ce6bc4ebd4f9f Author: Sven Gothel Date: Tue May 7 23:28:08 2013 +0200 GLX: Put native ByteBuffer to native-order in 'glXGetVisualFromFBConfig' and minor edits (final, same 'nativeOrder()' call style) commit 038896636311c66e70f38066329c601beb0a3866 Author: Sven Gothel Date: Tue May 7 22:36:26 2013 +0200 Minor: Typo/Syntax in GLRendererQuirks commit 2344a21587b3053fc2f343087319ee094fe45442 Author: Sven Gothel Date: Tue May 7 13:34:25 2013 +0200 NEWT MonitorMode: Refine 081177f2433be50e3b5d46385c2f0f3f96311ed8: Reduce EDT roundtrip when resize/positioning on MonitorMode changed .. commit 081177f2433be50e3b5d46385c2f0f3f96311ed8 Author: Sven Gothel Date: Tue May 7 12:51:18 2013 +0200 NEWT Multiple Monitor Mode: Fix monitorModeChanged(..) event id, WindowImpl.monitorModeChanged(): Resize/position if not fitting into virtual screen viewport. commit 061ce19983556a751471459a964d886e4d7e3908 Author: Sven Gothel Date: Tue May 7 01:03:17 2013 +0200 NEWT Multiple Monitor Mode: Add missing 'collect' impl. for NEWT/AWT impl. commit 84576bc0b7c5bd9b7554ec02f01786228efdbe07 Author: Sven Gothel Date: Tue May 7 00:35:08 2013 +0200 MonitorMode: Fix API doc / comments / names. commit 5fb7f6322863e11892ace100e131ac7451ba8274 Author: Sven Gothel Date: Mon May 6 23:20:48 2013 +0200 MonitorMode Unit Tests: Perform 'filterByRate(..)' _after_ 'filterByResolution(..)' (desired resolution) commit c8f41307f4a622398b3e765badc0525d74c2cbf7 Author: Sven Gothel Date: Mon May 6 17:31:31 2013 +0200 Fix GLX: X11GLXContext used wrong FBConfig n/a query; X11GLX*: If FBConfig is n/a force GLX (server) version down to 1.1 to avoid crashes w/ old GLX server (i.e. Mesa 4.*). commit 502e1d863e636808b7436354c3b639fc2f92bf29 Author: Sven Gothel Date: Mon May 6 17:29:35 2013 +0200 Fix GLSL Version Exposure: Type in 'static' GL -> GLSL matching, don't set GLSL version if GLSL is n/a commit 6ebf649d1b87944257fe492e0aef842d1b8debc2 Author: Sven Gothel Date: Mon May 6 17:27:09 2013 +0200 Fix Bug 600 and Bug 721: Adding support for multiple monitors w/ NEWT - Support for all monitor devices and their available modes - X11: Use RandR 1.3 if available - Retrieve information - Changing a monitor device's mode - Support for dedicated and spannig fullscreen - See - TODO: - X11 RandR does _not_ relayout the virtual screen size and neither the CRT's viewport. We may need to relayout them if they were covering a seamless region to achieve same experience! - OSX: No machine to attach a secondary CRT -> TEST! - Tested Manually for Regressions - Linux ARMv6hf (Rasp-Pi/BCM, Panda/X11) - Android (Huawei, Kindle) - Tested Manually and junit: - X11/Linux - NV, ATI-Catalyst w/ 2 CRTs - VBox w/ 4 CRTs - Win/Windows - NV, w/ 2 CRTs - VBox w/ 4 CRTs - X11/OpenIndiana, NV, 1 CRT commit 4d35eaa766071fd8dedab8b6e2ee53710831c567 Author: Sven Gothel Date: Sat Apr 27 08:47:24 2013 +0200 GLReadBufferUtil: Utilizing PixelBufferProvider; Adding AWTGLReadBufferUtil adding BufferedImage support; Demonstrating w/ unit tests. commit 587ec1437ed762ed8cdfcbf27f940ab83813f4a5 Author: Sven Gothel Date: Sat Apr 27 08:28:46 2013 +0200 TextureData: Add PixelAttributes and PixelBufferProvider; ColorSink back to JPEGDecode (not general enough) - TextureData: Add PixelAttributes and PixelBufferProvider - PixelBufferProvider is intended as a pattern allowing producers (i.e. GLReadBufferUtil) to utilize custom pixel buffer for various intend. - PixelAttributes can be chosen by PixelBufferProvider implementation and groups the texture's pixel/data format and type. TextureData uses PixelAttributes internally now. - ColorSink back to JPEGDecode (not general enough) - Partially reverts 94ea306d1809290db678d3181619bdc39d4334bb commit 2fc95fa183a133b4a1b675c50a2d97bf41c6c391 Author: Sven Gothel Date: Sat Apr 27 03:18:07 2013 +0200 Add missing JogAmp (c) note - using date of 1st JogAmp edit. commit 29e5caf61c1e09d2b225f4d42f5a384dd6eef9a8 Author: Sven Gothel Date: Sat Apr 27 01:45:14 2013 +0200 Complete commit e7064ece049705e013d80985eae698ce0ee3c4e3: Add getDefaultPixelDataFormat(), complementing getDefaultPixelDataType() commit 94ea306d1809290db678d3181619bdc39d4334bb Author: Sven Gothel Date: Sat Apr 27 01:38:12 2013 +0200 Move JPEGDecoder.PixelStorage -> TextureData.ColorSink: Appropriate name + public use commit ff9fb2d0adc81fdf25d6e26b91e1f67d8241e3e4 Author: Sven Gothel Date: Fri Apr 26 07:41:12 2013 +0200 GLContext*'s ctxGLSLVersion: Use zeroVersion to denominate uninitialized VersionNumber instead of null, it's get*string returns a zero length string instead of null. commit 36dc4f5ab6957a4078842c488afb51df2fdc0630 Author: Sven Gothel Date: Fri Apr 26 05:38:24 2013 +0200 Simplify GLDrawableFactory's SharedResource Query Methods; Move WindowsWGLDrawableFactory Quirks to GLRendererQuirks (NeedCurrCtx4ARBPixFmtQueries, NeedCurrCtx4ARBCreateContext); Bug 706: Confine NeedCurrCtx4ARBCreateContext to [Windows, ATI, driver < 12.102.3); Avoid possible NPE @ GLContext.getGLVendorVersionNumber() - Simplify GLDrawableFactory's SharedResource Query Methods - Moving common methods to GLDrawableFactory/GLDrawableFactoryImpl while reusing common methods to SharedResourceRunner.Resource. - All factories SharedResources impl. SharedResourceRunner.Resource. - Move WindowsWGLDrawableFactory Quirks to GLRendererQuirks (NeedCurrCtx4ARBPixFmtQueries, NeedCurrCtx4ARBCreateContext) - For better maintenance, move the mentioned quirks from the windows factory to our common place, being detected within GLContextImpl after each context creation. - Bug 706: Confine NeedCurrCtx4ARBCreateContext to [Windows, ATI, driver < 12.102.3) - Before we added this quirk if [Windows, ATI], however, we have hopes that the new drivers will suffice for all as tested successful on my test machine (AMD Radeon HD 6300M Series, amd_catalyst_13.5_mobility_beta2). - Avoid possible NPE @ GLContext.getGLVendorVersionNumber() - GLContext.getGLVendorVersionNumber() never returns 'null' but a zero version instance instead! - Add API doc. - Use mixed case names in GLContextImpl.setRendererQuirks(..). commit 75b3d37a3b15c071b49609921244bcb62d329fa9 Author: Sven Gothel Date: Thu Apr 25 06:08:01 2013 +0200 Fix Bug 706 and Bug 520: Certain ATI GPU/driver require a current context when calling wglCreateContextAttribsARB (Windows) See discussion at https://jogamp.org/bugzilla/show_bug.cgi?id=520 https://jogamp.org/bugzilla/show_bug.cgi?id=706 commit e2323aea92dc8d47f583002921287a06230b2d93 Author: Sven Gothel Date: Wed Apr 24 21:49:40 2013 +0200 Quirk DontCloseX11Display: Only detect w/ X11 NativeWindow System. commit 8b70108d6fd04b2ab97cbd1b6729361b5ce98a6b Author: Sven Gothel Date: Wed Apr 24 18:48:14 2013 +0200 X11 Error Handler: Start quiet; Init: quite = !debug; Internal calls: Pass through errorHandlerQuiet state. commit 56b330db24338cb287f1c53b92a6e0b7bf521625 Author: Sven Gothel Date: Wed Apr 24 05:15:36 2013 +0200 Add scripts/make.jogl.all.sh commit 8d7819aa08b031fddd5813ec29b2fa3d66666407 Author: Sven Gothel Date: Wed Apr 24 05:10:50 2013 +0200 Use new toolchain (gluegen 3b7ea9f67487be8f133c19b493b632fc579c5049) commit 9711076d8d34ae4235697bee782eaf36f487e0ca Author: Sven Gothel Date: Tue Apr 23 08:12:25 2013 +0200 Complete intend of commit cdbf3f42ea530f91639536e03b2c203715c3c300 - Test for null against a temp variable to narrow races commit 8a66294628589d765c1c5d5b3cafe7b939179dc2 Author: Sven Gothel Date: Tue Apr 23 08:02:02 2013 +0200 Fix JAWTUtil's ToolkitLock: Using RecursiveLock instance covering the AWT lock instead of simple volatile fields (bug). commit 47dca9c0af7ba6240aa11e154fbfafbd07c6cfbd Author: Sven Gothel Date: Tue Apr 23 07:58:08 2013 +0200 X11GLXContext: Issue XSync(..) after forcing X11ErrorHandle and before glXCreateContextAttribsARB(..) - Mitigate driver bugs Ensures the error handler is in place and previous X11 cmds are being executed before the 'critical' glXCreateContextAttribsARB(..) call which might lead to erroneous behavior w/ buggy drivers. commit 471ae0dea0666398f181baea4d4e91ca666fd46c Author: Sven Gothel Date: Tue Apr 23 07:53:56 2013 +0200 Refine some API docs .. commit 0f7412855c118cb501d8a001df7a7487354b5029 Author: Sven Gothel Date: Tue Apr 23 07:53:31 2013 +0200 Fix Bug 722: Make GLEventListenerState 'transaction' safe Animator.pause[ surface.lock[ modify ] ] GLEventListenerState: New model for GLEventListenerState's transaction safety: - Z Decorate-1: Animator.pause [ X ] Animator.resume - X Decorate-2: Surface.lock [ Y ] Surface.unlock - Instead of setting AbstractGraphicsDevice, just swap the handle and ownership. - Issuing setRealized(..) only if required, i.e. having an upstream-surface (EGL..) depending on used device - Utilizing setRealized(..) on the GLAD's delegated 'real' drawable, avoiding optional GLAD locking. - Cleanup and above changes shall render impl. easier to read. GLEventListenerState Unit Tests: - If swapping/moving from AWT -> NEWT, use a NEWT dedicated Display avoiding ATI driver XCB crash - read comment. commit cdbf3f42ea530f91639536e03b2c203715c3c300 Author: Harvey Harrison Date: Fri Apr 19 01:19:48 2013 -0700 Test for null against a temp variable to narrow races Signed-off-by: Harvey Harrison commit 03a3f209aff955410e0f3133e73078529c23d3e1 Author: Sven Gothel Date: Fri Apr 19 02:46:48 2013 +0200 Bug 721: NEWT/X11 RandR 1.3 Support - Part 2 - Rename impl class/files, start RandR13 coding. commit 5eee4251b781e90ac66c33a2a1bcb7f2f6cf736a Author: Sven Gothel Date: Thu Apr 18 23:23:09 2013 +0200 GLJPanel: Avoid NPE of 'backend' in getChosenGLCapabilities() and DisposeGLEventListenerAction.run() ; Make 'backend' volatile due to possible multi-threading access. commit 0a7cd9c58537d80131dbebf102f1f639ca0eb334 Author: Sven Gothel Date: Thu Apr 18 19:14:35 2013 +0200 Bug 718: WindowsBitmapWGLDrawable: Requires GLProfile.GL2, fix BITMAP GLCaps ASAP at Ctor instead of setRealized(true); WindowsWGLContext: Exclude ARB creation for BITMAP Unit Test TestGLAutoDrawableFactoryGLnBitmapCapsNEWT added using BITMAP on GLProfile.getDefault() Also: X11GLXContext, WindowsWGLContext: Cleanup formatting in createImpl(..) commit 0a9ecf74540659a3258ea71d3355eeb45697db96 Author: Sven Gothel Date: Thu Apr 18 10:26:30 2013 +0200 type: weather -> whether :) .. it's spring again :) commit 4d2f4a1b75dc176b2b46de5076b587b70988ac42 Author: Sven Gothel Date: Thu Apr 18 09:56:49 2013 +0200 Bug 718: Exclude updateGraphicsConfigurationARB(..) usage for BITMAP (Windows Vista does report BITMAP w/ ARB PFD) On Windows Vista machines, ARB PFD selection reports BITMAP which is attempted to be used. Excluse updateGraphicsConfigurationARB(..) from BITMAP query, similar to getAvailableGLCapabilitiesARB() from commit 61a47e07975eb2fd8b1f5f60552935c993a6eef6. TODO: Re-evaluate commit db24615ebaebcda88ffb7275d3a60e6400226099 commit db24615ebaebcda88ffb7275d3a60e6400226099 Author: Sven Gothel Date: Thu Apr 18 08:39:57 2013 +0200 Bug 718: Further restriction of Windows BITMAP PFD's - RGB888 and !alpha only On Windows Vista machines, using alpha, i.e. RGB8888 failed to SetPixelFormat(..), hence only allow RGB888. commit d173feb60d085399194549102d4b3d77512c3f73 Author: Sven Gothel Date: Thu Apr 18 08:31:11 2013 +0200 Bug 721: NEWT/X11 RandR 1.3 Support - Part 1 - Delegate RandR functionality to pluggable impl. for RandR 1.1 and 1.3 (todo) commit f8adb848c0d6b61a8a34dfcdaf13ca773000fbb4 Author: Sven Gothel Date: Thu Apr 18 03:17:27 2013 +0200 GLJPanel: setFocusable(true) at ctor to allow keyboard input commit fd418a69eca7b8c1bb74244982305fc6004d0a52 Author: Sven Gothel Date: Thu Apr 18 03:16:33 2013 +0200 Fix Bug 720: Unify all platform specific GLContextImpl specializations; Fix Bug 719 - Windows BITMAP Offscreen Orientation is not propagated through API Fix Bug 719 - Windows BITMAP Offscreen Orientation is not propagated through API Depends on Bug 720, since cleaning up GLContextImpl* is required to move property 'GLContext.isGLOrientationFlippedVertical()' to 'GLDrawable.isGLOriented()' where it belongs! Windows BITMAP GLDrawable impl. isGLOriented() shall return false, while we keep the BITMAPINFOHEADER's height field negative to remove the need for vertical flip when used w/ AWT or Windows, .. Then property 'GLDrawable.isGLOriented()' has to be recognized throughout the utility functions, i.e. TextureData's mustFlipVertically and hence TextureIO writer. Fix Bug 720: Unify all platform specific GLContextImpl specializations GLContextImpl shall have only _one_ unique platform derivative to allow proper swapping of GLDrawables of any type via: - 'GLAutoDrawable.setContext(GLContext newCtx, boolean destroyPrevCtx)', which calls - 'GLContext.setGLDrawable(GLDrawable readWrite, boolean setWriteOnly)' Exception: External context may be specialized. All drawable specific property handling shall be provided and implemented (if possible) via GLDrawable specializations. - GLContext.isGLOrientationFlippedVertical() -> GLDrawable.isGLOriented() - PNGImage.createFromData() takes 'isGLOriented' to properly handle vertical flipping simply by line ordering - TextureIO's PNG writer passes TextureData's getMustFlipVertically() as isGLOriented to PNGImage.createFromData() - GLReadBufferUtil respects GLDrawable's isGLOriented() when creating TextureData instance. - Screenshot respects GLDrawable's isGLOriented() - Screenshot is deprecated, use GLReadBufferUtil. - Removed all PBuffer attributes, i.e. floatingPoint, RenderToTexture and RenderToTextureRectangle. - Allows removal of special pbuffer handling in GLContext* implementations. - Removed also from GLCapabilities* - Removed from deprecated GLPbuffer Impact: - Low, users who desire to render into a texture shall use our FBO GLOffscreenDrawable. - Only use case was the deprecated GLPbuffer - floating point framebuffer technology is still patented anyways :) - Removed Java2DGLContext, which was only used for OSX's GLJPanel Java2D bridge, which is no more supported anyways. commit 3cc6fd350fe56ac5b344ee75cfa8bfe4dcc44f1b Author: Sven Gothel Date: Wed Apr 17 15:04:05 2013 +0200 GLJPanel.toString(): Avoid NPE commit 61a47e07975eb2fd8b1f5f60552935c993a6eef6 Author: Sven Gothel Date: Wed Apr 17 15:03:46 2013 +0200 Bug 718: Windows BITMAP Offscreen Fails w/ GLCaps other than simple RGB888 - Filter invalid PFD configs - Filter invalid PFD configs - WindowsBitmapWGLDrawable: Clip chosenCaps to RGBA888[0|8] - WindowsBitmapWGLDrawable: Only use BITMAPINFOHEADER.BiBitCount=24 - WindowsWGLGraphicsConfiguration: Only allow GDI BITMAP PFD's w/ RGB888 w/ alpha <= red, others may fail - WindowsWGLGraphicsConfigurationFactory.getAvailableGLCapabilities() - Fetch ARB caps w/o BITMAP - Concat GDI [BITMAP] caps commit 6dd851e74dde28d24a2d2bb6e788a78bc7fedd76 Author: Sven Gothel Date: Wed Apr 17 14:57:24 2013 +0200 *Capabilities: Cleanup string ctor; GLGraphicsConfigurationUtil: Clean getExclusiveWinAttributeBits(..); WGLGLCapabilities: Add PFD2String(..) commit 1af639340bb119e4839170c6e5e3258012d99136 Author: Sven Gothel Date: Wed Apr 17 14:53:44 2013 +0200 Bug 718: Windows BITMAP Offscreen Fails w/ GLCaps other than simple RGB888 - Refine Unit Tests ; UITestCase.Snapshot: Add RGBA bits to filename. Split TestGLAutoDrawableFactoryOffscrnCapsNEWT to TestGLAutoDrawableFactoryGL2OffscrnCapsNEWT and TestGLAutoDrawableFactoryES2OffscrnCapsNEWT TestGLAutoDrawableFactoryGL2OffscrnCapsNEWT contains more 'Bitmap' tests of various caps, w/ snapshots. commit 94d3960757db292eeefb7acdfa1220b6b7168b98 Author: Sven Gothel Date: Tue Apr 16 06:19:08 2013 +0200 Fix Bug 705 - Set Quirk DontCloseX11Display also if using X11 and X11Util has set 'markAllDisplaysUnclosable' (Down -> Upstream) commit cea002636c4c8e1cf41288662fffc26bd24f90ac Author: Sven Gothel Date: Tue Apr 16 06:03:24 2013 +0200 Fix Bug 705 - Validated that Quirk DontCloseX11Display is not required w/ Mesa >= 8.0 Tested w/ kubuntu 12.04, Mesa 8.0.4 (glx/dri/gallium and X11 SW rasterizer) commit ff25c711fe4fa627004c57e0d308d06759156290 Author: Sven Gothel Date: Tue Apr 16 05:50:55 2013 +0200 Fix Bug 705 - Cleanup & Generalize Commit 5b47372590ec715647ebbd75d70c41ec7a64485a ; Close X11 Display in isDeviceSupported() - Moved GL vendor version parsing to GLVersionNumber - Moved X11Util.markAllDisplaysUnclosable() trigger into SharedResource creation of - X11GLXDrawableFactory - EGLDrawableFactory - GLProfile is back to pre 5b47372590ec715647ebbd75d70c41ec7a64485a, i.e. contains no quirk artifact (clean) - Close X11 Display in X11GLXDrawableFactory.isDeviceSupported() Regression of 9a4fcc7ea4ec61e4ceed791acced734ac04ea270 - TODO: Remove X11Util markAllDisplaysUnclosable detection code ? Notes to Martin: - Use TAB == 4 SPACES - No author names into source code, git commit log is enough. - No need to tag your edits, the diff is enough. commit 5b47372590ec715647ebbd75d70c41ec7a64485a Author: Martin Hegedus Date: Tue Apr 2 09:31:41 2013 -0700 Fix Bug 705 - Make Mesa X11 driver < 8.0 use new Quirk DontCloseX11DisplayConnection commit 6894a534b40b870fa7c237cc307a359866707db5 Author: Xerxes Rånby Date: Mon Apr 15 01:54:24 2013 +0200 FFMPEGMediaPlayer: Fix mpeg seek using time_base.num 1 , time_base.den 90000 Prevent division and multiplication by zero errors in native code after mpeg video seek caused by type truncation. Signed-off-by: Xerxes Rånby commit 4d7c527756f0410f31915e86815732ba912c1bee Author: Martin Hegedus Date: Sun Apr 14 23:34:37 2013 +0200 Bug 705: This is the version of displayMultiple02 which uses glXCreateNewContext instead of glXCreateContext. X11 Error w/ Mesa 7.0 commit dc8d3bbbba7910b3e2453a0d7d37d2bf8a05f4b6 Author: Martin Hegedus Date: Sun Apr 14 23:32:26 2013 +0200 Bug 705: This is the version of displayMultiple02 which uses glXCreateNewContext instead of glXCreateContext. Segmentation fault w/ Mesa 7.0 commit b414c4b1be05249590138e73558ada82bd170f15 Author: Sven Gothel Date: Sun Apr 14 06:28:44 2013 +0200 Fix Bug 692: Add tracking of VERTEX_ARRAY_BINDING, and enable allowing a bound non default VAO to pass VBO enabled test, even if VBO is disabled. VAO is available if: GL >= 3.0 or is having GL_ARB_vertex_array_object extension. checkBufferObject(..) checks whether VERTEX_ARRAY_BINDING has a non default VAO bound in case no VBO is being bound and VAO is allowed. glBindVertexArray(int) is being tracked, i.e. on state VERTEX_ARRAY_BINDING commit d7096cfeee500177db85d97241cc142af41517cb Author: Sven Gothel Date: Sun Apr 14 06:24:03 2013 +0200 Bug 692: Add modified version of Edgar Velazquez-Armendariz's test case for testing alternating VAO and VBO usage. Alternating VBO/VAO usage triggers bug 692, where our VBO enable check throws an exception: javax.media.opengl.GLException: element vertex_buffer_object must be enabled to call this method at jogamp.opengl.gl4.GL4bcImpl.checkBufferObject(GL4bcImpl.java:34318) at jogamp.opengl.gl4.GL4bcImpl.checkElementVBOEnabled(GL4bcImpl.java:34361) at jogamp.opengl.gl4.GL4bcImpl.glDrawElements(GL4bcImpl.java:4395) at javax.media.opengl.DebugGL3.glDrawElements(DebugGL3.java:1006) at com.jogamp.opengl.test.junit.jogl.acore.TestBug692GL3VAO$GL3VAODemo.displayVAONormal(TestBug692GL3VAO.java:254) commit 594329b4334e453a3f0b7bb6f576a6e943263f95 Author: Sven Gothel Date: Sun Apr 14 05:53:44 2013 +0200 GLES[12] Impl: Cleanup 'checkBufferObject(..)', remove unused and 'avail' argument and 'initBufferObjectExtensionChecks()' commit d2075cce989881ce3556e4384ab1fbdf829bc212 Author: Sven Gothel Date: Sun Apr 14 03:46:46 2013 +0200 NEWT/AWT-Wrapper-Driver: Fix MS-Windows Case (Use NativeWindow window handle); Use set size by frame only for OSX/CALayer commit 9d78ea65a6bf1064887bc7524c01a689a1fc2a5c Author: Sven Gothel Date: Sat Apr 13 08:15:21 2013 +0200 NEWT/AWT: Fix 'AWT driver' to work w/ OSX CALayer ; WindowImpl: 'Object getWrappedWindow()' -> 'NativeSurface getWrappedSurface()' WindowImpl: 'Object getWrappedWindow()' -> 'NativeSurface getWrappedSurface()' - AWT driver itself instantiates the JAWTWindow for eager initialization at createNative(). Fix 'AWT driver' to work w/ OSX CALayer - See above - size reconfig changed to ease OSX CALayer, i.e. set frame's size if already visible reducing CALayer artefacts. commit 5606dd12f8086b506f33030072af5095a5871f9c Author: Sven Gothel Date: Fri Apr 12 20:29:56 2013 +0200 FBObject.init() uses safe 1x1 size like reset(..) to behave equal; GLFBODrawableImpl.contextMadeCurrent(ctx, true): Throw exception if !initialized commit cfe62741e19196d973d9b31f2c8f3873705cb74b Author: Sven Gothel Date: Fri Apr 12 20:27:21 2013 +0200 GLContextImpl: destroy(): Fix null drawable check; makeCurrentWithinLock(): Add drawable size validation before attempt to create context; MacOSXCGLContext: Explicit exception for Null AttachGLLayerCmd. GLContextImpl: - destroy(): - Fix null drawable check Only if the GLContext isCreated(), we require a drawable to be set. - Proper name of associateDrawable Exception - makeCurrentWithinLock(): - Add drawable size validation before attempt to create context. - 'makeCurrent()' shall never be called w/o proper sized drawable, i.e. > 0x0. - returns CONTEXT_NOT_CURRENT, if drawable size is <= 0x0 MacOSXCGLContext: - Explicit exception for Null AttachGLLayerCmd. In case context creation has failed via makeCurrent(), AttachGLLayerCmd may never been issued and hence maybe NULL. Catch this case and send a meaningful exception, which is catched and fwd in GLContext.destroy(). commit dc898f14eeebf524726c820e25ffefb166a6c7f3 Author: Sven Gothel Date: Thu Apr 11 08:03:39 2013 +0200 Bug 697: Fix commit 4db745e84fac610f85ab085e5c147e571e82e008 - Not compile clean! Also brought back my safe showCursor logic. The code was not compile clean: - declaration after use w/o prototype! - missing var declaration 'success'! - 'pointerVisible=0', instead of 'wud->pointerVisible=0' var. not found! Used my old safe show cursor logic, while removing the max count, which was redundant, since we can check whether the counter moves in the right direction. commit 214794419b2e736d581bb57bf9b5838b09e28f1c Author: Sven Gothel Date: Thu Apr 11 07:35:56 2013 +0200 NEWT/WindowsWindow.c: Simplify pointerVisible branch for calling SafeShowCursor(..) commit 294294c2317d1a22406f471c74235315afed86e4 Author: Sven Gothel Date: Thu Apr 11 07:29:02 2013 +0200 LinuxEventDeviceTracker: Reapply changes from commit b13868b612689307ebf4e46ee4ede2fd0560e504, which got lost via my merge conflict resolution (duh). commit b13868b612689307ebf4e46ee4ede2fd0560e504 Author: Sven Gothel Date: Thu Apr 11 07:16:19 2013 +0200 NEWT KeyEvent: Use UTF-16 UniCode for key-code and key-symbol exposing well defined key encoding and simplify usage. Note, we use one collision to reduce key-code range: [0x61 .. 0x78] keyCodes [F1..F24] collide w/ ['a'..'x'] Since keyCode/Sym won't use lower capital a-z, this is a no isssue. KeyEvent: - 'printable' type is being determined by a nonPrintableKeys table, while 'action' type is set in case !printable and !modifier. - public ctor hidden, use create(..) method instead. This allows us to ensure modifier bit are properly set (incl. the keySym one) w/o performance loss. - ctor validates that only one of the type flags is set, printable, modifyable or action. WindowImpl: - Using IntBitfield of 255 bits to track pressed state, while removing the repeat state tracking since it is redundant. The Windows impl. uses a single field to validate whether a key was already repeated or not. - Properly cast keyCode short values to int for tracking! AWTNewtEventFactory, SWTNewtEventFactory: - Add translation of keyCode/Sym from and to NEWT - All tested via: - Newt -> Awt for AWTRobot - OSX CALayer: AWT -> NEWT - SWT tests X11: - Add VK_CONTEXT_MENU mapping (XK_Menu) LinuxEventDeviceTracker: - Fix apostrophe and grave mapping, i.e. to VK_QUOTE and VK_BACK_QUOTE. Adapted all unit tests, especially: - TestNewtKeyCodesAWT: More fine grained keyCode ranges to test using proper keyCode symbols. commit 4bea90974190baa2110c8398b4fe2dccb61e0daa Author: Harvey Harrison Date: Tue Apr 9 22:00:47 2013 -0700 jogl: remove executable bit from some java files and a png Signed-off-by: Harvey Harrison commit f3e0f109ac7f03ef803523af8e965d713b6044db Author: Sven Gothel Date: Wed Apr 10 04:08:57 2013 +0200 GLContextImpl.destroy(): Fail fast in case of invalid dawable [null, !realized] and makeCurrent() failure. commit 7978096bdaac4c4bd14187382bb1f8ab9d082ebe Author: Sven Gothel Date: Wed Apr 10 03:22:19 2013 +0200 GLDrawable: Refine API doc; GLDrawableImpl: Balance createHandle()/destroyHandle(); Handle LOCK_SURFACE_CHANGED in lockSurface() ; GLContextImpl.makeCurrent(): Fix drawable handle validation. GLDrawable: Refine API doc (realized/handle) - Lifecycle of the drawable handle was not clear - Ephasizing handle's dependency on NativeSurface's lock state and drawable's realization GLDrawableImpl: Balance createHandle()/destroyHandle() - updateHandle() -> createHandle() - ensure both are balance, see below GLDrawableImpl: Handle LOCK_SURFACE_CHANGED in GLDrawableImpl's lockSurface() - call destroyHandle() and createHandle() GLContextImpl.makeCurrent(): Validate drawable handle if realized only. - it is valid to have an invalid drawable handle if not realized (see above) commit eff09c3545f32f1f481198d57de71a5bf564e797 Author: Sven Gothel Date: Wed Apr 10 02:49:14 2013 +0200 Debug Messages: Unify getThreadName() usage and 'Catched Exception' messages commit 578011822abb973800f96a21138c497862cba800 Author: Xerxes Rånby Date: Mon Apr 8 22:03:53 2013 +0200 LinuxEventDeviceTracker: ALT, ALT_GRAPH & CTRL modifiers. Signed-off-by: Xerxes Rånby commit dc049d5ab60c856576ee7dd58d3cc36da9f9780b Author: Xerxes Rånby Date: Mon Apr 8 16:28:49 2013 +0200 LinuxEventDeviceTracker: 4 space indentation Signed-off-by: Xerxes Rånby commit e9467722e50b3db835228e6d91d7087b39e9d164 Author: Xerxes Rånby Date: Mon Apr 8 16:12:02 2013 +0200 LinuxEventDeviceTracker: shift-modifier Signed-off-by: Xerxes Rånby commit 2b3bb9426385d97375c3312f5c0f4e2a827b1fbb Author: Harvey Harrison Date: Tue Apr 9 01:12:22 2013 +0200 Fix Bug 703: Quaternion slerp function. Disclaimer: Not tested / No unit test. commit 09ebc2cd6fdd317134f0afb38174418a6d067d65 Author: Sven Gothel Date: Mon Apr 8 23:04:49 2013 +0200 Bug 641 NEWT: Refine definition of keySym, i.e. for printable keys, keySym is the 'unshifted' UTF-16 char value ; Add isPrintable() to toString(). commit d2fc229b844942646fd9a32fc943923a5770a4be Author: Sven Gothel Date: Mon Apr 8 23:02:00 2013 +0200 Bug 641 NEWT/OSX Deliver keySym, derived from the current layout's lower-case UTF-16 character. commit 6755fc707672a77025bcde81a47a5e4d93b37fb1 Author: Sven Gothel Date: Mon Apr 8 22:45:22 2013 +0200 NEWT KeyEvent: More tight definition of isPrintable(), i.e. must have defined keyCode [and keyChar]; VK_KEYBOARD_INVISIBLE -> isActionKey commit 9b28aea53c9b7aa6fb8c9ae5521d935fa92d1026 Author: Sven Gothel Date: Mon Apr 8 21:57:10 2013 +0200 NEWT/OSX: Remove USE_SENDIO_DIRECT conditional compilation, by now it's clear we need to enqeue the events commit 3052de236eb08a27286f20d52671bb40dbdd8875 Author: Sven Gothel Date: Mon Apr 8 03:34:51 2013 +0200 Bug 641 NEWT/X11: Deliver 'J_VK_WINDOWS'; keySym is layout independent for dead-keys (zero keyChar); For 'unshifted' keySym's also unmask Ctrl and Mod* states commit 64fd6eef879f7453b491a9df421faf2d47da9d7f Author: Sven Gothel Date: Mon Apr 8 02:48:57 2013 +0200 NEWT/Native: NewtCommon_GetJNIEnv(..) adding 'asDaemon' flag, used by all OSX JNI attachments to save time since detachment is skipped. commit ed596d9a329f1788979e148a4d09df7815ada527 Author: Sven Gothel Date: Mon Apr 8 02:47:23 2013 +0200 Bug 641 NEWT: X11 Deliver keyCode layout independent, keySym layout dependent and UTF-16 keyChar value On X11, the layout dependent keySym was not delivered [1], as well as the UTF-8 to UTF-16 translation was missing [2]. [1] is solved using XLookupString w/o ShiftMask [2] is solved using JNI's NewStringUTF, which takes UTF-8. commit 4db745e84fac610f85ab085e5c147e571e82e008 Author: Julien Gouesse Date: Sat Apr 6 10:44:48 2013 +0200 Adds the missing file commit 4934f1801ba44d20353652f9ee3686a13323fb74 Author: Sven Gothel Date: Sat Apr 6 06:22:45 2013 +0200 Bug 709: Testing texured demo w/ FBO, comparing w/ onscreen - No corruption. commit 82ee483ad56571ca30fea3d0c5a9078216b0d8c5 Author: Sven Gothel Date: Sat Apr 6 05:25:17 2013 +0200 Bug 714: Add GL_COPY_READ_BUFFER_BINDING and GL_COPY_WRITE_BUFFER_BINDING, which were added to spec post release. commit 4898f582d9303caa7fd1b44438808e86b51c2a3b Author: Sven Gothel Date: Sat Apr 6 04:47:34 2013 +0200 Bug 678: Differentiate ALT (left) and ALT_GRAPH (right) on X11, EventDev, Windows and OSX - X11: Memorize pressed Alt_R to decide which 'alt' has to be used for non key modifier fetching - Windows: Only use GetKeyState(..) and compare the US vkey, since int. kbd layout use reduced scancode commit 9cf72802f4559efa77baa14ae5d501bc341bf86a Author: Sven Gothel Date: Sat Apr 6 00:51:06 2013 +0200 TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT: Wrong test comment, no NEWT involved commit c2e02b9964860dc59af92187ae124695e1e2f1dc Author: Julien Gouesse Date: Fri Apr 5 19:11:38 2013 +0200 Adds a unit test and a fix for the bug 697 commit d4e840fed236bb139515ec03a4a2ebe1676d3cb1 Author: Sven Gothel Date: Fri Apr 5 03:40:17 2013 +0200 Bug 707: Fix NEWT EVENT_MOUSE_EXITED not sent on Windows - Regression of commit 85338858f5c58694fa88e77df1386d0556887944 Commit replaced enqueueMouseEventID w/ sendMouseEventID, while not removing the 'jboolean wait' argument. This also lead to staying in DRAGGED mode when mouse left the window. commit 5e3563d7dab16384bcc381e24b741fa651f2f3cd Author: Sven Gothel Date: Fri Apr 5 02:23:11 2013 +0200 Bug 713: Handle broken EGL setup - Catch all Exception types, not only JogampRuntimeException at *DrawableFactory* instantiation trial In case EGL is not completly installed, EGLDisplayUtil.eglGetDisplayAndInitialize(..) will throw a GLExeception which was not catched in GLDrawableFactory. The latter only catched JogampRuntimeException caused by ReflectionUtil due to n/a classes, but the actual initialization code is capable to throw others. commit e68566febb69f6aca4bdf39d1d841c17df894631 Author: Sven Gothel Date: Thu Apr 4 16:27:11 2013 +0200 SWT unit tests: Sort w/ AWT and Headless - Fix threading w/ AWT. This especially impacts (fixes) Mac OSX. commit ea87d0ce9a57762700b295f002bb544cef7223a3 Author: Sven Gothel Date: Thu Apr 4 06:07:53 2013 +0200 OSX CALayer Unit Tests: NEWT child is destroyed if NewtCanvasAWT is disposed/removed, due to offscreen/onscreen transition commit 57bf60b789d89d70a58583a9cc0119317f179c3a Author: Sven Gothel Date: Thu Apr 4 06:06:50 2013 +0200 OSX CALayer/NewtCanvasAWT: Force relayout of component (size +1, size -1) when attaching NEWT Child to avoid false CALayer position. commit 68526d3f9432ea9c80e444146fc99b4ae1352d50 Author: Sven Gothel Date: Thu Apr 4 05:34:57 2013 +0200 OSX/CALayer Threading Part4: Stream all JAWT Root CALayer Operations on OSX Main-Thread Previous code created, set and unset the root CALayer on the current thread, which lead to a very delayed destruction of the root CALayer w/. With Java7 this lead to a possible resource starvation in certain situations, since Java7 uses an CAOpenGLLayer. Similar w/ f354fb204d8973453c538dda78a2c82c87be61dc, creation, set and unset is operated on main-thread. commit 15e20956fc6a700c12b54342b6e1320a150ce039 Author: Sven Gothel Date: Wed Apr 3 18:15:36 2013 +0200 JAWTWindow: Issue component.repaint() after attachSurfaceLayer(..), otherwise no rendering result might be visible w/o Animator commit 8d3018d0852e1d44cb76298f6113629c110a1d4d Author: Sven Gothel Date: Wed Apr 3 18:14:01 2013 +0200 OSX CALayer minor edit: Call [super setFrame..] directly commit a27af8dc7120eac0cf84a777e7a7d82dae548c01 Author: Sven Gothel Date: Wed Apr 3 17:19:06 2013 +0200 NewtCanvasAWT: Cleanup up private method calls; Attach/Detach JAWTWindow's SurfaceUpdateListener to NEWT Window when it gets attached/detached. commit a54bd3e963a7be320dee0c9692d237607fcd0f96 Author: Sven Gothel Date: Mon Apr 1 05:16:35 2013 +0200 Fix Bug 671: Add JPEG Decoder w/o AWT Dependencies Original JavaScript code from , author 'notmasteryet' . Ported to Java. Enhancements: * InputStream instead of memory buffer * User provided memory handler * Fixed JPEG Component ID/Index mapping * Color space conversion (YCCK, CMYK -> RGB) * More error tolerant +++ Features: JOGL AWT RGB ok ok YCCK ok Exception CMYK ok Exception YUV Store ok n/a Need Y-Flip no yes +++ Benchmark: TestJPEGJoglAWTBenchmarkNewtAWT JOGL.RGB Loops 100, dt 1199 ms, 11.99 ms/l JOGL.YUV Loops 100, dt 351 ms, 3.51 ms/l AWT..... Loops 100, dt 2144 ms, 21.44 ms/l File: jogl/src/test/com/jogamp/opengl/test/junit/jogl/util/texture/j1-baseline.jpg Machine: GNU/Linux PC (AMD 8 core), JavaSE 6 (1.6.0_38) .++++ UITestCase.setUp: com.jogamp.opengl.test.junit.jogl.util.texture.TestJPEGJoglAWTBenchmarkNewtAWT - benchmark libEGL warning: DRI2: failed to authenticate 0: JPEGImage[261x202, bytesPerPixel 3, reversedChannels false, JPEGPixels[261x202, sourceComp 3, sourceCS YCbCr, storageCS RGB, storageComp 3], java.nio.DirectByteBuffer[pos=0 lim=158166 cap=158166]] 0: TextureData[261x202, y-flip false, internFormat 0x1907, pixelFormat 0x1907, pixelType 0x1401, border 0, estSize 158166, alignment 1, rowlen 0, buffer java.nio.DirectByteBuffer[pos=0 lim=158166 cap=158166] JOGL.RGB Loops 100, dt 1199 ms, 11.99 ms/l 0: JPEGImage[261x202, bytesPerPixel 3, reversedChannels false, JPEGPixels[261x202, sourceComp 3, sourceCS YCbCr, storageCS YCbCr, storageComp 3], java.nio.DirectByteBuffer[pos=0 lim=158166 cap=158166]] 0: TextureData[261x202, y-flip false, internFormat 0x1907, pixelFormat 0x1907, pixelType 0x1401, border 0, estSize 158166, alignment 1, rowlen 0, buffer java.nio.DirectByteBuffer[pos=0 lim=158166 cap=158166] JOGL.YUV Loops 100, dt 351 ms, 3.51 ms/l 0: TextureData[261x202, y-flip true, internFormat 0x1907, pixelFormat 0x80e0, pixelType 0x1401, border 0, estSize 158166, alignment 1, rowlen 261, buffer java.nio.HeapByteBuffer[pos=0 lim=158166 cap=158166] AWT..... Loops 100, dt 2144 ms, 21.44 ms/l ++++ UITestCase.tearDown: com.jogamp.opengl.test.junit.jogl.util.texture.TestJPEGJoglAWTBenchmarkNewtAWT - benchmark commit 00c65b4a34445d140ca9e6ee531dfa4278b8e770 Author: Sven Gothel Date: Fri Mar 29 16:34:56 2013 +0100 NewtBaseActivity: Move setVisible(false) from onPause() -> onStop(), since only onStop() declares invisible status. onPause() could imply other non fullscreen activity on top. commit 0b242442fba01df86be636f54e3d478aa722d6a7 Author: Sven Gothel Date: Thu Mar 28 23:24:39 2013 +0100 Adapt to new version scheme, see GlueGen a3f2ef50ad33c58a240a17fcf03e415d772207c3, etc; Fix NewtVersion, NativeWindowVersion and NewtVersionActivityLauncher NewtVersion, NativeWindowVersion: Also search for extension javax.media.opengl (all packaging) NewtVersionActivityLauncher: Use new launcher URI commit a121055f9e4ac039fa820f06e9e81e5ce72e5e24 Author: Sven Gothel Date: Thu Mar 28 17:36:12 2013 +0100 NEWTGearsES2Activity*: Adding property to enable 'process kill' behavior (memory and killSelf) commit a211a2e84e3f69d511a43e8673b6beda779c6a12 Author: Sven Gothel Date: Thu Mar 28 17:19:24 2013 +0100 NewtBaseActivity: Perform cleanup() even on onCreate() due to possible call w/ initialized states (App process is killed for memory exhaustion etc) .. even though I was not able to reproduce this case, it will not harm. commit fa847cd755833ab7f3530bffbb63ccfd8863a9f6 Author: Sven Gothel Date: Thu Mar 28 17:18:13 2013 +0100 GLStateKeeper: Add clearPreservedGLState() commit b95dbaeb0d23d365bc15d9b6deb4149d35be533a Author: Sven Gothel Date: Wed Mar 27 12:33:16 2013 +0100 Complete 9a4fcc7ea4ec61e4ceed791acced734ac04ea270: SharedResourceRunner.Impl.createSharedResource(..): isGLXAvailableOnServer(..) call redundant since checked upfront at isDeviceSupported(..) commit 9a4fcc7ea4ec61e4ceed791acced734ac04ea270 Author: Sven Gothel Date: Wed Mar 27 12:27:57 2013 +0100 SharedRessourceRunner: Add isDeviceSupported(..) query before spawn off thread, allowing a more gracefull detection of n/a GLX on X11 commit 83e9b0ce577e1a78eda20800f86cadcf90905141 Author: Sven Gothel Date: Wed Mar 27 12:22:43 2013 +0100 PNGImage: Add license header ; TestPNGImage01NEWT package move .. commit a0c50530714ceb3072e258b8704cd05376d30074 Author: Sven Gothel Date: Wed Mar 27 03:19:38 2013 +0100 Unit Tests: Unify 'AWT Robot Key Press/Release', waitForIdle, action, delay, waitForIdle ; TestFocus0*: Wait until closed after win.destroy(). commit 7c397e9915278f529aa38b1f02591b95b9e8c446 Author: Sven Gothel Date: Tue Mar 26 18:14:13 2013 +0100 NEWTEvent: Fix toString message - add comma commit d90855bfc457a703d7a8fe14598f4d5e8de7e73e Author: Sven Gothel Date: Tue Mar 26 12:42:04 2013 +0100 GLJPanel: Refine API doc commit 21cde04129ea241744b95cad8fd0a545d3474b05 Author: Sven Gothel Date: Sun Mar 24 14:07:11 2013 +0100 Android/NEWT MouseEvent: Fix Detection/Processing of 2-Finger-Scroll Gesture - Part 2 Multiple tests on different devices disclosed that: - 1 of 2 pointers get disconnected every now and then .. -> Shall tolerate this case - dist-delta within gesture may shrink below doubleTouchSlope -> Remove constraint after gesture detection - Always validate pointer-id GearsES2 - Works quite stable on several devices now - Moved soft-keyboad show to 4-pointer pressed >= 0.7f pressure commit ded080fd890c21b54ba1f96d84f9e355711dc88a Author: Sven Gothel Date: Sun Mar 24 07:08:42 2013 +0100 Newt/MouseEvent: Add 'float[3] getRotation()', getWheelScale() -> getRotationScale(), refinement of commit 18cb57246372eda72c25a5cd9a69a873bdf09489 Turns out the 'wheel' semantics are not generic enough and confining rotation values to one axis only satisfies the traditional mouse wheel. Widen the definition of 'rotation' and delivering 3-axis if supported. On NEWT/Android, we deliver the 2-axis for example, allowing to rotate around both or scrolling using both directions (-> GearsES2). commit 654a678bd7171e81ec947cafa854dad366f5041e Author: Sven Gothel Date: Sun Mar 24 05:18:34 2013 +0100 Android/NEWT MouseEvent: Fix Delivery of MultiTouch PRESSED/RELEASE; Fix Detection/Processing of 2-Finger-Scroll Gesture ; GearsES2: Add NEWT based 'zoom' gesture detection. - Fix Delivery of MultiTouch PRESSED/RELEASE Adopting MouseEvent changes of commit 18cb57246372eda72c25a5cd9a69a873bdf09489 - Fix Detection/Processing of 2-Finger-Scroll Gesture Dropping utilization of Android's GestureDetector and implementing our own, which turns out to simplify keeping track of states. Our gesture detection works well w/ user NEWT based gesture detection (-> See GearsES2 zoom and rotate), using following criteria related to Android parameter: - ScaledDoubleTapSlop: - Max 2 finger distance - ScaledTouchSlop: - Min. movement w/ 2 pointer withing ScaledDoubleTapSlop starting 'scroll' mode - Max. change of finger distance in respect to initiating 2-finger distance (2x ScaledTouchSlop) - Max. distance growth in respect to initiating 2-finger distance. - GearsES2: Add NEWT based 'zoom' gesture detection. commit 18cb57246372eda72c25a5cd9a69a873bdf09489 Author: Sven Gothel Date: Sun Mar 24 05:08:30 2013 +0100 NEWT/MouseEvent: Refine MultiTouch Event Spec regarding associated 'action' pointer Index; Add PointerType[PointerClass]; Add 'wheelScale' Attribute; - Refine MultiTouch Event Spec regarding associated 'action' pointer Index In case an instance represents multi-touch events, i.e. {@link #getPointerCount()} is > 1, the first data element represents the pointer which triggered the action if individual to one pointer. For example {@link #getX(int) e.getX(0)} at {@link #EVENT_MOUSE_PRESSED} returns the data of the pressed pointer, etc. - Add PointerType[PointerClass] This allows applications to identify the type and it's class [On-/Offscreen] helping to interpret semantics, e.g. wheel-rotate and new wheel-scale - Add 'wheelScale' Attribute Returns the scale used to determine the {@link #getWheelRotation() wheel rotation}, which semantics depends on the {@link #getPointerType() pointer type's} {@link PointerClass}. See API doc for details .. TODO: NEWT/Android changes adopting these changes. commit 218b9d88f4ec1d15a46697dd7c5e835660020f99 Author: Sven Gothel Date: Sat Mar 23 11:17:31 2013 +0100 NEWT/Android: Fix suspense regression of commit d514ecbf052d013ea8c0982c490757678075a9ea Explicit win.destroy() shall only be called at activity.onDestroy(), - GLStateKeeper preservation is marked at pause, - and the Window's surfaceDestroyed() will also issue destroy() - so it's safe Reason: On Suspense (or power button), application is paused _without_ surfaceDestruction ! commit d514ecbf052d013ea8c0982c490757678075a9ea Author: Sven Gothel Date: Fri Mar 22 13:43:59 2013 +0100 NEWT/Android (Bug 665): Add Support for GLStateKeeper ; onPause() always destroys ; Recognizing all GLAutoDrawable's GLAnimatorControl for pause/resume ; Use GLAnimatorControl instead of Animator - Add Support for GLStateKeeper If !isFinishing() (HOME button), preserve the GLEventListener if an GLStateKeeper instance - onPause() always destroys onDestroy() is too late, i.e. surfaceDestroyed() already called - Recognizing all GLAutoDrawable's GLAnimatorControl for pause/resume pause/resume the GLAnimatorControl of all GLAutoDrawable instances - Use GLAnimatorControl instead of Animator We used an Animator reference .. duh! Note: The EGL native WindowDriver (Android and BCM.IV) must retain their own copy of EGLGraphicsDevice, which preserves the EGLDisplay handle due to EGLDisplayUtil reference counting per nativeHandleID. commit 3673964caf2c4ac4efddffb8d7e9c28cce49b48c Author: Sven Gothel Date: Fri Mar 22 10:31:27 2013 +0100 NEWT/Android WindowDriver.closeNative0(..): Catch Exception at surface destroy allowing to continue destruction. commit 109def11bebd63f66eb0e751aa7932ce147a2738 Author: Sven Gothel Date: Fri Mar 22 10:30:14 2013 +0100 Animator: Cleanup DEBUG output commit 3ad03e41a0cda81119c23f350c00b064a4de70c2 Author: Sven Gothel Date: Fri Mar 22 10:29:54 2013 +0100 Add GLStateKeeper handling GLEventListenerState preservation and restauration for GLAutoDrawable - New GLStateKeeper interface, package com.jogamp.opengl Implemented by: - GLAutoDrawableBase Currently supported by: - NEWT GLWindow - GLEventListenerState package move: com.jogamp.opengl.util -> com.jogamp.opengl commit 8b34a0389e07967ce0c2ccc430a7c1d0803c3e51 Author: Sven Gothel Date: Fri Mar 22 06:33:01 2013 +0100 NEWT/Android: Remove KeyEvent.KEYCODE_HOME handling, since it doesn't work - i.e. cannot be intercepted this way. commit 58ebd43a78491281e2c3b012666220ed47634c7e Author: Sven Gothel Date: Thu Mar 21 20:40:41 2013 +0100 NEWT/Android: Fix BACK button implementation, use different KeyCode mappings and allowing native action to be suppressed. - Don't trust soft-kbd visibility state, but perform invisible action. If the latter was successful - soft-kbd was visible before. - Map BACK to VK_KEYBOARD_INVISIBLE and propagate it, if soft-kbd was visible before. No native default action is performed. - Map BACK to VK_ESCAPE event and propagate it, if soft-kbd was invisible _and_ an activity was registered via registerActivity(Activity), i.e. by NewtBaseActivity. Otherwise proceed w/ default action (-> activity.finish()). - If the KeyListener consumed the [EVENT_KEY_RELEASED, VK_ESCAPE] event, it will be suppressed and no default action performed. This allows applications to have a custom 'ESCAPE' or 'BACK' handling. Otherwise (not consumed) the default action is performed. commit 98f6f99ddc6643cfa540d6c85c64c7f8510cc1ea Author: Sven Gothel Date: Thu Mar 21 17:38:26 2013 +0100 NEWTEvent: Add isConsumed() and setConsumed(boolean) methods to simply usage, using the existing consumedTag attachment for compatibility and efficiency. commit 9dcd8bba63cfbcd6e72c855065cf4dafdbcf037e Author: Sven Gothel Date: Wed Mar 20 17:23:17 2013 +0100 OSX/NEWT: Fix visible -> false when closing and reparenting window. This lead to non functional recreational reparenting. OSX recreational reparenting moves the saved GLEventListenerState at destroy to the new dawable/surface, which must be valid. The flaky visible state caused seemingly random reparenting failures. - WindowImpl.ReparentActionRecreate.run() set 'visible:=true', which circumvented OSX to wait for actual realization. - OSX WindowDriver.closeNative(): Issue visibleChanged(true, false); ASAP commit 23acd1f063cfd8519be57f867cbafe748094756d Author: Sven Gothel Date: Wed Mar 20 17:14:25 2013 +0100 MacOSXCGLContext: NPE in DEBUG mode while releaseNSOpenGLLayer on main-thread, drawable maybe null already commit ec50802db11f897a49a6f9e716186c700411ece5 Author: Sven Gothel Date: Wed Mar 20 16:15:04 2013 +0100 OSX/NEWT: Fix native window parenting freeze, invisible/orderOut0, Position bugs w/ parenting Fix native window parenting freeze: - Pull out setJavaWindowObject(..) of changeContentView(..) to be called seperately, add param for changeContentView(..) to enable/disable setJavaWindowObject() - initWindow0(..): - Call changeContentView(..) w/o setJavaWindowObject() - setJavaWindowObject(..) at end of initialization Fix native window parenting orderOut0: If parent window is invisible or no parent used call orderOut(..), otherwise call orderBack(). Fix updatePosition(..): positionChanged(..) - Position bug w/ parenting - AWT parent passed 0/0 - call positionChanged(..) w/ client-pos instead of screen-pos Fix getLocationOnScreenImpl(..) - Position bug w/ parenting - Position < 0/0 is valid! Misc: - setWindowClientTopLeftPointAndSize0(..), setWindowClientTopLeftPoint0(..): Add 'display' param, deciding whether area should be display (invalidated) commit 30b2490eef5069214eb6cc0c1b18ddb62c15123b Author: Sven Gothel Date: Wed Mar 20 10:58:07 2013 +0100 TestGearsES2NEWT/TestGearsES2NewtCanvasAWT: Add -noanim option to manually validate Bug 649 commit d9d0abc0974f42dbc1c7c91bc004b92729b8ae8a Author: Sven Gothel Date: Wed Mar 20 04:35:21 2013 +0100 PNGImage: Cleanup code and reuse scanlineRGBA buffer in indexed mode. Add DEBUG property 'jogl.debug.PNGImage' commit bfe40bf3670731ef44ff4066c2a7119f1ab43bf8 Author: Sven Gothel Date: Wed Mar 20 04:32:12 2013 +0100 TestPNGTextureFromFileNEWT: Use new PNG test file locations, add RGBA tests and use alpha in drawable commit 47a123169cf99bd9889caccb75c9be48d359d9a0 Author: Sven Gothel Date: Wed Mar 20 04:31:07 2013 +0100 Newt PNG test file locations commit 3ee6665fb5cdcf50599e7ec51c67f6d56a73887b Author: Sven Gothel Date: Wed Mar 20 04:30:32 2013 +0100 Rename PNG test files and add RGBA variations (To be used by TestPNGTextureFromFileNEWT, etc) commit 6d85470b2cb58670fd326b66ccbb396e24139014 Author: Julien Gouesse Date: Wed Mar 20 02:50:28 2013 +0100 Handles indexed PNGs commit 1a1557cd9e31bd7975d858b7b2d49e586805bba4 Author: Sven Gothel Date: Tue Mar 19 05:27:59 2013 +0100 OSX/NEWT: NSWindow/NSView Ops on main-thread w/o blocking - Part2 Continues commit 81cbcdc8469143587b2044661dd613c798ae02ba Perform on main-thread invocation from Java, allowing to issue visibleChanged(..) after creation/visible calls. This fixes the 'Visibility not reached ..' regressions. commit 28f0a8ca7437a70f6adf7947529b36060b381f7c Author: Sven Gothel Date: Tue Mar 19 05:23:08 2013 +0100 MacOSXCGLContext: Remove Debug output commit 8e56bd80ab17970e2a45039a44d15e36514c4d50 Author: Sven Gothel Date: Tue Mar 19 00:35:40 2013 +0100 GLJPanel: No need to utilize AWT Component's default ImageObserver code - pixel data is ready when invoked. commit 81cbcdc8469143587b2044661dd613c798ae02ba Author: Sven Gothel Date: Tue Mar 19 00:33:00 2013 +0100 OSX/NEWT: Following CALayer streaming design, i.e. issue NSWindow/NSView Ops on main-thread w/o blocking; NEWT/WindowImpl: Volatile multithreaded mutable values Similar to commits: 28c6472335b924080d638b33a28f8f4eedb459b1 f354fb204d8973453c538dda78a2c82c87be61dc main-thread operations cannot block main-thread. Luckily we are able to create the NSWindow and NSView instance uninitialized (deferred) on the current thread, while issuing their initialization on the main-thread w/o blocking. Further more a size glitch is fixed, which didn't take the title bar into account. +++ NEWT/WindowImpl: Volatile multithreaded mutable values Since position, size and other attributes might get changes off-thread, these fields needs to be volatile. commit f354fb204d8973453c538dda78a2c82c87be61dc Author: Sven Gothel Date: Tue Mar 19 00:22:28 2013 +0100 OSX/CALayer: OSX/CALayer Threading Part3 - Run CALayer ops in a streaming design on main-thread w/o [infinitive] blocking History: Part1 commit 896e8b021b39e9415040a57a1d540d7d24b02db1 (Run CALayer Ops on current thread to avoid blocking) Part2 commit 28c6472335b924080d638b33a28f8f4eedb459b1 (Run CALayer Ops on main-thread w/o blocking) Dependency: GlueGen commit 4becdfa125b07ff969d6540e1112735b53cd15eb (Fix RecursiveLockImpl* Timeout corner case) Part2 misses essential locking of the OpenGL context (and it's surface upfront) while creating the NSOpenGLLayer instance. The latter instantiates a OpenGL context shared w/ JOGL's, hence it cannot be locked. Encapsulating NSOpenGLLayer creation/attachment and it's detachment/release in sub-classes AttachNSOpenGLLayer and DetachNSOpenGLLayer, where instances will be streamed on main-thread. Both tasks are triggered at associateDrawable(boolean bound). The mentioned GL context locking requires disturbs the 'streaming' design considerably in AttachNSOpenGLLayer. It is solved by attempt to acquire the recursive lock of the surface and the context via 'tryLock(maxwait)' w/ screen-vSync-period/2. If the locks could not be acquired completly, the AttachNSOpenGLLayer instance will be re-queued to the main-thread for later execution. Before DetachNSOpenGLLayer is being streamed, it is validated whether AttachNSOpenGLLayer did run. A recursive situation does happen w/ resizing an offscreen pbuffer drawable! Hence extra care is being taken. commit 12e868f79938f44eba6f50313f977be76d8ea2bb Author: Sven Gothel Date: Tue Mar 19 00:00:18 2013 +0100 MyNSOpenGLContext::dealloc: Avoid 'invalid context' commit 4457b343fe8eba3f2da096a72e38b1aac978ffd5 Author: Sven Gothel Date: Mon Mar 18 08:18:04 2013 +0100 OSX CGL: Don't issue [NSOpenGLContext clearDrawable] for [NSOpenGLContext setView: view] which breaks pbuffer; Add [NSOpenGLContext clearDrawable]. commit 3f2da22cfb682d0eb4fedec98b088f95371f8ef4 Author: Sven Gothel Date: Mon Mar 18 08:16:25 2013 +0100 NativeWindow OSXUtil RunOnMainThread: Use daemon attachment and do not detach; Add RunLater0(..) commit ed911109d40e0fca3b2263a4617f35d475612549 Author: Sven Gothel Date: Mon Mar 18 03:09:15 2013 +0100 Adapt to GlueGen commit b1eb7ca6b9d7dec7ff62c1f1e8ef0a0545724d2f: Function- RunnableTask adds PrintStream 'exceptionOut' argument in ctor. commit 28c6472335b924080d638b33a28f8f4eedb459b1 Author: Sven Gothel Date: Fri Mar 15 19:08:22 2013 +0100 Remodel OSX/CALayer Threading (commit 896e8b021b39e9415040a57a1d540d7d24b02db1): Run on main-thread w/o blocking ; Misc Changes Commit 896e8b021b39e9415040a57a1d540d7d24b02db1 moved all native CALayer calls to the current thread to avoid deadlocks. Even though this seemed to be fine at least resource GC (release/dealloc calls) were issued very late in time, probably due to multithreading synchronization of JAWT and/or OSX API. Example: Our 'TestAddRemove01GLCanvasSwingAWT' test didn't freed CALayer resources incl. GL ctx when destroying the objects (AWT Frame, GLCanvas, ..), leading to resource starvation .. eventually. Remedy is a compromise of behavior before commit 896e8b021b39e9415040a57a1d540d7d24b02db1 and that commit, i.e. to run CALayer lifecycle methods on main-thread, but do not block! The careful part within MacOSXCGLContext.associateDrawable(..) performs the following block on main-thread: - lock the context - create NSOpenGLLayer (incl. it's own shared GL context and the DisplayLink) - attach NSOpenGLLayer to root CALayer - unlock the context Due to the GL ctx locking, this async offthread operation is safe within our course of operations. Details: - NSOpenGLContext - Context and CVDisplayLink creation at init - Call [ctx update] if texture/frame size changed - 'waitUntilRenderSignal' uses default TO value if given TO is 0 to avoid deadlocks +++ Misc Changes: - Fix object type detection: isMemberOfClass -> isKindOfClass - OSXUtil_isNSView0 OSXUtil_isNSWindow0, CGL_isNSOpenGLPixelBuffer - MacOSXCGLDrawable/MacOSXPbufferCGLDrawable: remove getNSViewHandle() method. MacOSXCGLContext uses common code to detect nature of the drawable handle. - MacOSXCGLContext/CALayer: Use safe screenVSyncTimeout values, never 0 to avoid deadlock! - JAWTWindow.invalidate: Call detachSurfaceLayer() if not done yet commit 538a41849192cc09da36eeaa5fa9ae10973d85b7 Author: Sven Gothel Date: Thu Mar 14 17:22:22 2013 +0100 Fix NEWT WindowImpl reparent-recreate w/ GLEventListenerState: Bug introduced w/ commit e2506d7663b752f00f0a98f793ebad52e65bd1e3 In case a reparent action takes place w/ recreate, only preserve the GLEventListenerState if the window is valid and will become visible again (wasVisible). Also add proper DEBUG log prefix to GLEventListenerState. commit dd705f1eb14b87b207e375ea0d71e00155a9933f Author: Sven Gothel Date: Thu Mar 14 11:26:10 2013 +0100 OSX/CALayer: Simplify FixCALayerLayout()/layoutSurfaceLayer() call, no more need for explicit call - OffscreenLayerSurface.layoutSurfaceLayer() removed, no more required - JAWTWindow adds a ComponentListener, which issues FixCALayerLayout() at resized, moved and shown. - MyNSOpenGLLayer no more requires fix*Size() methods - MyNSOpenGLLayer::setDedicatedSize() need no explicit CATransaction, performed by caller. commit 896e8b021b39e9415040a57a1d540d7d24b02db1 Author: Sven Gothel Date: Thu Mar 14 10:48:44 2013 +0100 OSX/CALayer: Revise CALayer 'RunOnMainThread' utilization, avoiding deadlocks RunOnMainThread(waitUntilDone:=true,..) can deadlock the main-thread if called from AWT-EDT, since the main-thread may call back to AWT-EDT while injecting a new main-thread task. This patch revises all RunOnMainThread CALayer usage, resulting in only one required left: - OSXUtil.AddCASublayer() w/ waitUntilDone:=false Hence the CALayer code has no more potential to deadlock main-thread/AWT-EDT. OSXUtil.AddCASublayer() must be performed on main-thread, otherwise the CALayer attachment will fail - no visible rendering result. +++ Note: A good trigger to test this deadlock is to magnify/zoom the OSX desktop (click background + ctrl-mouse_wheel) before running some unit tests. TestGLCanvasAWTActionDeadlock01AWT and TestAddRemove02GLWindowNewtCanvasAWT also have the potential to trigger the mentioned deadlock. commit 58f6f4e5665ae2c72ec6bbd86ad5a36bef00de07 Author: Sven Gothel Date: Wed Mar 13 08:21:02 2013 +0100 Fix TestParenting01NEWT: Since recreational reparenting resets the fps-counter, wait for a few frames! commit ce788752d0370b63ed6cebf8c8e91b459935b187 Author: Sven Gothel Date: Wed Mar 13 07:36:10 2013 +0100 GLEventListenerState: Moved to public package 'com.jogamp.opengl.util' commit 74019520e8d82d03f5cf95729456717b34060f5d Author: Sven Gothel Date: Wed Mar 13 07:15:41 2013 +0100 Minor Changes: EGLDisplayUtil: Add stack trace in DEBUG mode for opened DPYs; JAWTWindow: Add JAWT info in toString() commit e2506d7663b752f00f0a98f793ebad52e65bd1e3 Author: Sven Gothel Date: Wed Mar 13 07:12:59 2013 +0100 Bug 665: Allow re-association of GLContext/GLEventListener to a GLDrawable (Part 5) - GLAutoDrawableBase: - Add 'setPreserveGLStateAtDestroy(..)' to preserve the GLEventListenerState at destroy() operation, and impl. details pullGLEventListenerState()/pushGLEventListenerState(). pullGLEventListenerState() is called automatic at destroyImplInLock(), where pushGLEventListenerState() has to be called after drawable realization instead of context creation. - Note/TODO: Method will become public in GLAutoDrawable in general! - NEWT/GLWindow: - Use GLEventListenerState preservation for reparenting case w/ destruction, i.e. keep GLContext/GLEventListener alive while reparenting in recreation mode. Scenario: NewtCanvasAWT Child <-> Top on OSX w/ CALayer commit c225285e09f0a29fca418601bf1aa07cafb54339 Author: Sven Gothel Date: Wed Mar 13 06:35:30 2013 +0100 Bug 665: Allow re-association of GLContext/GLEventListener to a GLDrawable (Part 4) Note: - GLEventListenerState preservs the GLAutoDrawable state, i.e. GLContext, all GLEventListener and the GLAnimatorControl association. - GLEventListenerState may be utilized to move the state from a dying GLAutoDrawable, to be moved to a new created GLAutoDrawable at a later time. - GLEventListenerState will be made public soon. +++ Exessive unit tests cover the new feature, tested manually on GNU/Linux/X11 and OSX(Java6/Java7). +++ - GLAutoDrawable - Change 'setContext(..)' to allow the destruction of the unbound old context: 'setContext(GLContext newCtx)' -> 'setContext(GLContext newCtx, boolean destroyPrevCtx)' - Implementations: Properly implement 'setRealized(..)' incl. obeying threading constraints if exists. Method is being utilized at least for GLEventListenerState.moveTo(..) to unrealize and realize the drawable resources. +++ Fix propagation of GLContext/GLDrawable association change (Bottom -> Top): GLDrawableImpl.associateContext GLContextImpl.associateDrawable GLContextImpl.makeCurrent GLContextImpl.destroy GLContext.setGLDrawable ... GLDrawableHelper.switchContext GLAutoDrawble.setContext associateDrawable(..)/associateContext(..) unifies and hence: - GLContextImpl.contextRealized() (removed) - GLDrawableImpl.contextRealized() (removed) - GLDrawableImpl.associateContext(..) (merged) - MacOSXCGLContext.drawableChangedNotify(..) (removed) +++ - EGLUpstreamSurfaceHook.evalUpstreamSurface() validates the surface's device for reusage, which is valid in case of GLEventListenerState.moveTo(..) - MacOSXCGLContext.NSOpenGLImpl: pixelFormat replaces NSOpenGLLayerPfmt and has simplified lifecycle [create..destroy], while native NSOpenGLLayer code only holds the reference until released. commit 8457bf35fee253d9af29ff1150a9671f6896fc17 Author: Sven Gothel Date: Wed Mar 13 01:30:38 2013 +0100 MemoryObject: Use GlueGen's new HashUtil GlueGen commit 1a4514accc8f61ab7ff5fe8c82d22a5ef356c865 commit 6b924839b33dbf507dd9eebc0ad5b5fbf23f4fb2 Author: Sven Gothel Date: Wed Mar 13 01:29:50 2013 +0100 *External*Context Impl: Remove unused 'lastContext' field, incl. their makeCurrent() and release() override. Semantics of 'lastContext' are plain wrong, since release() override does claim the previous 'lastContext' is current at the end - however, it wasn't technically made current. commit d3672684177a98a58c434bcd27541f44917050f3 Author: Sven Gothel Date: Sat Mar 9 04:23:55 2013 +0100 Fix Mix2TexturesES2 unit tests: Use synchronized texID access and add glFinish() after demo -> FBO rendering on or off thread. Fixes shared GLContext OSX rendering. commit b29f221c903aefdf99af8e8a8544b2223036454f Author: Sven Gothel Date: Sat Mar 9 03:41:16 2013 +0100 Fix buggy unit test for Bug 694: The unpack alignment has to be considered! commit d143475e995e473c142fd34be2af6521246f014a Author: Sven Gothel Date: Fri Mar 8 22:58:34 2013 +0100 GLJPanel: Updating GLJPanel documention w/ current mode of operation commit 59a1ab0312492a251a0efc700d040a5f71e88611 Author: Sven Gothel Date: Fri Mar 8 22:36:44 2013 +0100 GLJPanel: Add DEBUG_VIEWPORT flag, Add USE_GLSL_TEXTURE_RASTERIZER flag, DEBUG reshape trace. - Add DEBUG_VIEWPORT flag Via explicit property 'jogl.debug.GLJPanel.Viewport' (not via jogl.debug=all) Traces the current GL Viewport in OffscreenBackend.postGL(..) - Add USE_GLSL_TEXTURE_RASTERIZER flag Via explicit property 'jogl.gljpanel.noglsl'. Disables use of GLSL FBO flipping. DEBUG reshape trace commit 2cf74ca4d4d7f41e8e416bfa14fe07f175dff62b Author: Sven Gothel Date: Fri Mar 1 16:51:39 2013 +0100 TestBug694 -> TestBug694AWT so it properly gets picked up by the AWT unit test ant task. commit 7f2637bfe5ef1764882a123a8942e60632730bdf Author: Sven Gothel Date: Thu Feb 28 20:30:22 2013 +0100 Fix Bug 695: WGLExt.wglChoosePixelFormatARB causes buffer underflow due to a higher reported number of configs than buffer size "I encountered a case on an NVidia Quadro 3500 fx where the call to WGLExt.wglChoosePixelFormatARB in WindowsWGLGraphicsConfiguration (currently line 355) returns 264 in numFormatsTmp despite 256 being passed in for the maximum number of formats. This results in a buffer underflow on line 368 since pformatsTmp only has 256 values and it's trying to copy 264 values." Fixed in WindowsWGLGraphicsConfiguration and WindowsPbufferWGLDrawable. commit 26b9b3f5dd2e6914dd6555dda61d04fac115a4b1 Author: Sven Gothel Date: Thu Feb 28 20:18:43 2013 +0100 TestBug572AWT: Add test case w/ setting GLCanvas's size and frame.pack() on AWT-EDT and current thread. commit 9a5e03cc9e028422f8e7c85e875f6db4bedeaaff Author: Sven Gothel Date: Thu Feb 28 20:17:53 2013 +0100 All AWT Related Unit Tests: Call AWT 'frame.setVisible(..)' and 'frame.pack()' on AWT-EDT - Use dedicated test TestBug572AWT for testing otherwise. commit 33eb58fc25b0e44666f72e5a2abf6e040efba8bf Author: Sven Gothel Date: Thu Feb 28 18:40:46 2013 +0100 Adapt to GlueGen's relocation of AWTEDTExecutor - GlueGen commit 99a50b38f5650fedca0f207e03706ffa9492e50c commit 7891d2b8f73afb3a71aea237bc5891f05d1d538f Author: Sven Gothel Date: Thu Feb 28 18:38:45 2013 +0100 Fix AWT EDT Deadlock in AWTWindowClosingProtocol, regression of commit 808a9a27a8c1c9e0a6701a8dd81d51f8daa8129d commit b85903ac92be7884e99eb7b85884033d7ea42337 Author: Sven Gothel Date: Thu Feb 28 15:24:42 2013 +0100 NEWT: Harmonize MouseEvent Pressure (API Change!) Due to high fluctuation (lack of normalized) pressure values on Android devices, an option to query the normalized value and access to the current known maximum pressure is required. MouseEvent: - getMaxPressure() returning the [self calibrated] known maximum pressure - getPressure(..) -> getPressure(.., boolean normalize) (API Change!) - return normalize ? pressure/maxPressure : pressure; commit 01fdd5c564dcb8a7d4f8347f71728f8c2b657cb3 Author: Sven Gothel Date: Thu Feb 28 13:33:21 2013 +0100 NEWT WindowImpl: Cleanup redundancies in destroy() and windowDestroyNotify(boolean) - destroy() - screen is never null! - always attempt to removeScreenReference() - windowDestroyNotify(boolean) - NOP if !isNativeValid() to avoid DESTROY_* events commit 3a4892c43be4a9dabba73d42175c2cfa39bd6d8d Author: Sven Gothel Date: Thu Feb 28 13:31:29 2013 +0100 Fix Bug 677: NEWT/Android: Add support for Android's KeyEvent.KEYCODE_BACK Original author: Eric Brayet Revised by: Sven Gothel I took the freedom to cleanup the three original patches from https://github.com/Pooouf/jogl.git branch 'bug_677': - 7449d4726633d524a3bb79efffd04cfd0ca25e58 (removed by followup patch!) - 68c739a4f03e46deecdbb71c125b4586aec08d63 (removes previous patch!) - c2813dfc325a1482d18b6fc304e4e483f5633964 Further more I was able to reduce the 'extra' code while utilizing - Window's isKeyboardVisible() and using keyboardVisibilityChanged(false) to update the hidden keyboard state. - Moving the key-handling code to the containing WindowDriver class avoiding passing a reference to the inner view. - Using AndroidNewtEventFactory for NEWT KeyEvent creation +++ - Handle KeyEvent.KEYCODE_BACK w/ jogamp.newt.driver.android.WindowDriver.MSurfaceView.onKeyPreIme(..): if( soft keyboard is up ) [1] Update keyboard visibility state and return NEWT KeyEvent.VK_KEYBOARD_INVISIBLE; else [2] call WindowImpl.windowDestroyNotify(true) [3] then cont. processing, i.e. return false; - Turns out respecting WindowClosingMode might be - too complicated - interfere w/ Android UI behavior - AndroidNewtEventFactory - createKeyEvent - static - adding boolean param 'inclSysKeys', if true, KEYCODE_BACK and KEYCODE_HOME are mapped - Unit tests: GearsES2 + MovieCubeActivity0 shows keyboard if pressure > 0.6f - pressure on Android shall be between [0..1], however we have to figure out badly calibrated touchpads/Android device where we could experience pressure > 2.0f ! - TODO: API documentation of pressure [0..1] commit 808a9a27a8c1c9e0a6701a8dd81d51f8daa8129d Author: Sven Gothel Date: Thu Feb 28 00:39:28 2013 +0100 Fix NEWT/AWT WindowClosing Unit Tests ; Review/Cleanup NEWT WindowClosing mechanism Due to a NEWT WindowClosing event regression cause by NewtCanvasAWT changes a review of our WindowClosing event mechanism was required. Important cleanups are marked w/ '(*)' below. I would have preferred to change the 'WindowListener.windowDestroyNotify(WindowEvent)' method to pass a WindowCloseEvent object exposing more information like toolkit or programmatic destruction and passing whether a 'closing' or 'nop' action will be performed based on the WindowClosingMode. For now I postponed this idea .. since it would change the API again, but may reconsider it after merging the Android 'closing' patch. - InputEvent.consumedTag -> NEWTEvent.consumedTag - Window - (*) Promote setWindowDestroyNotifyAction(Runnable) to public, former WindowImpl.setHandleDestroyNotify(boolean). Using a Runnable action for WindowImpl.windowDestroyNotify(boolean) allows a setting defined alternative for destroy() and gets rid of [ab]using WindowListener.windowDestroyNotify(WindowEvent) for lifecycle actions. Used in: - GLWindow - GLAutoDrawableDelegate impl. - WindowImpl - Respect NEWTEvent.consumedTag for WindowEvents as well - (*) Impl. setHandleDestroyNotify(boolean) (see above) - (*) destroy() simply sends out pre- and post- destruction Window events, where windowDestroyNotify(boolean) sends out the pre-destruction event if NOP. - (*) windowDestroyNotify(boolean) is public now, allowing other impl. details to follow proper destruction using handleDestroyNotify Runnable (-> NewtCanvasAWT). - AWTWindowClosingProtocol: - addClosingListenerOneShot() -> addClosingListener() - calling addClosingListener() at addNotify() - calling removeClosingListener() at removeNotify() - AWTWindowClosingProtocol ctor taking NOP runnable, allowing to send WindowEvent.EVENT_WINDOW_DESTROY_NOTIFY at WindowClosingMode.DO_NOTHING_ON_CLOSE - add/remove listener on AWT-EDT - AWTWindowAdapter - Add 'removeWindowClosingFrom(..)', allowing to remove window closing event fwd. - Also fwd windowClosed in window closing fwd'ing. - NewtCanvasAWT - (*) Utilize AWTWindowClosingProtocol NOP runnable (see above) to fwd closing-NOP event to NEWT - (*) Unify remove/destroy code in destroyImpl(..) - !removeNotify -> destroy NEWT child programatic or as toolkit event - removeNotify || windowClosing -> destroy jawtWindow - (*) Remove AWTWindowAdapter/AWTParentWindowAdapter's windowClosingListener, since we utilize AWTWindowClosingProtocol - DisplayImpl - Adding 'final void dispatchMessage(final NEWTEvent event)' allowing to remove the NEWTEventTask wrapping for no reason in enqueueEvent(..) if on EDT and waiting. commit e2d2d4cc048e462ffa5efdc1737caad9d2fe0ef7 Author: Julien Gouesse Date: Sun Feb 24 17:23:11 2013 +0100 Adds a unit test for the bug 694 on gluScaleImage commit af384debfdf354d98e3d0d0c6e0c5cf5a967904e Author: Sven Gothel Date: Fri Feb 22 04:09:03 2013 +0100 NEWT/OSX Fix: Child positioning ; NewtCanvasAWT: Change reparent time and use actual component size while setting min/pref. size at setup - NEWT/OSX Fix: Child positioning - If !Offscreen and has-parent: Gather screen location by traversing through parent and set native position (was removed w/ commit 7d5c51b635e0795d9b170342bdebe8e7e0bbd01d since still buggy). - NewtCanvasAWT: Change reparent time and use actual component size while setting min/pref. size at setup - Analog to AWT GLCanvas - validates and reparents at reshape(..), paint(..) and update(..) - reshape(..) also trigers jawtWindow.layoutSurfaceLayer() - commit cbd8e33f1e19cf0c061c371af6930aba7c36b84f Author: Sven Gothel Date: Fri Feb 22 04:01:44 2013 +0100 Fix CALayer pos/size and animation. - Fix CALayer animation: - All CALayer animations are set to nil via overriding 'actionForKey' - Fix CALayer pos/size bug: - Fix root and sub CALayer position to 0/0 and size on the main-thread w/o blocking. - If the sub CALayer implements the Objective-C NativeWindow protocol NWDedicatedSize (e.g. JOGL's MyNSOpenGLLayer), the dedicated size is passed to the layer, which propagates it appropriately. - On OSX/Java7 our root CALayer's frame position and size gets corrupted by its NSView, hence we have created the NWDedicatedSize protocol. commit 405bc071d5d13e00d0561a485d31e3a7d61bf167 Author: Sven Gothel Date: Thu Feb 21 14:22:10 2013 +0100 TestNewtEventModifiers*: Robostness (uhh) Unify wait-clear result code - fix SWT event dispatching. commit fe0a2ad6f702aee71ea06f9da19ec9fd696d4095 Author: Sven Gothel Date: Thu Feb 21 13:24:05 2013 +0100 GLProfile: Adding convenient query for highest programmable core only GL profile As suggested @ http://forum.jogamp.org/How-to-force-core-profile-tp4028307.html However, one could always get a dedicated core profile via: - GLProfile.get(GLProfile.GLES2) - GLProfile.get(GLProfile.GL3) - GLProfile.get(GLProfile.GL4) .. etc commit ffcf0cb5beaf3c7c363d45cef0b9d18dcf3f50c6 Author: Sven Gothel Date: Thu Feb 21 10:27:31 2013 +0100 Bug 548 and Bug 679: Add 'glFlush()' requirement (OSX < 10.7.3 && NVIDIA GPU) to GLRendererQuirks and perform only if exists. commit 97401c4b832aa6f65bfbad47c54d18e4b720dbce Author: Sven Gothel Date: Thu Feb 21 09:35:05 2013 +0100 Relax GLContextImpl.setGLFunctionAvailability(..)'s Version Matching if testing major < 3 versions. (Bug 679) On OSX, we 'only' support the ctx ARB creation and hence have no !ARM fallback. If querying a version [2.0 .. 3.0] for GL2, it is acceptable if a valid OpenGL version is lower, e.g. 1.4. commit 24fe89e6d7cc551aaffb6c95624271eef027b275 Author: Sven Gothel Date: Thu Feb 21 09:26:19 2013 +0100 Fix GLVersionNumber (Bug 679): Don't use a subsequent version number if not valid! commit 43df6ed31d5144fb8fcdab51eae62fc123364a38 Author: Sven Gothel Date: Thu Feb 21 05:59:19 2013 +0100 TestGearsES2SWT: Fix NPE commit 10b4957dc36005453d2a4e7a3b4de4df20d0c901 Author: Sven Gothel Date: Wed Feb 20 21:52:42 2013 +0100 Fix NPE of Bug 679: The ctx was released w/o fully initialized (no proper ARB ctx of expected version ?) commit 14b278536e6f8de2ee6254796b89bd27d5419b72 Author: Sven Gothel Date: Wed Feb 20 21:51:40 2013 +0100 OSX/Java7/CALayer + JAWT: Partially Fix AWT/NEWT CALayer 'out of sight' bug, where our CALayer is moved out of the visible area - same erroneous behavior for GLCanvas and NewtCanvasAWT - sized-frame: Set framesize and validate() it - sized-component: Set component preferred size and call frame.pack() - added workaround 'OffscreenLayerSurface.layoutSurfaceLayer()' to fix CALayer size, which snaps for: - OK initial size before setVisible: sized-frame and sized-component - OK resize w/ sized-frame - OK manual frame resize - Invisible: w/ sized-component after setVisible() ++ - CALayer-Sublayer (GL) has additional retain/release when added/removed to be on safe side. commit cf3ecdb670c0dfecd1394d5b9d5d5588c1bf71f3 Author: Sven Gothel Date: Wed Feb 20 14:30:50 2013 +0100 NewtCanvasAWT: Fix size determination, i.e. take newt-child's size into account if no preferred size is given. commit 7d5c51b635e0795d9b170342bdebe8e7e0bbd01d Author: Sven Gothel Date: Wed Feb 20 14:29:04 2013 +0100 NEWT/OSX: Fix 'locationOnScreen' usage and use proper client-area window screen position (Fixes resize -> position) - Tested w/ NEWT GearsES2 and Java6 and Java7 on OSX commit c6224657027b8d4a5176810ce3acd09e97087ec5 Author: Sven Gothel Date: Wed Feb 20 14:19:20 2013 +0100 Unit Tests: Add [manual] demo cases for SWT (TestGearsES2SWT, TestGearsES2NewtCanvasSWT); Add more AWT/NEWT layout scenarious. commit be352d9b3bc2a6a5a5542a0f91f13c9e28fbb8e0 Author: Sven Gothel Date: Tue Feb 19 21:21:39 2013 +0100 Unit Tests NewtEventModifiers (2): Robostness - clearKeyboadAndMouse(): Add _testMouseListener.clear(); to clear all logs! - clearKeyboadAndMouse() after all tests - use implicit 'clearKeyboadAndMouse()' in execOffThreadWithOnThreadEventDispatch() commit e7df5d65e83e07bf7e8474aebcf9fd09f3597527 Author: Sven Gothel Date: Tue Feb 19 20:08:52 2013 +0100 Unit Tests NewtEventModifiers: Attempt to make them more robust for that one particular Windows-AMD Test Node - Adding 'waitForVisible' and 'waitForRealized' on the GLAutoDrawable before test - Adding clearKeyboadAndMouse before test commit 85338858f5c58694fa88e77df1386d0556887944 Author: Sven Gothel Date: Tue Feb 19 08:00:38 2013 +0100 Bug 678 (fix), Bug 641 (API + Windows Impl.), Bug 688 (prep): Update NEWT's KeyEvent handling while distinguish keyCode (kbd layout independent) and keySym (kbd layout dependent) API Changes: - Virtual key codes and symbols are of type short. - KeyEvent.keySymbol() shall return a layout dependent value (Bug 641) - Method returns former keyCode() value, which was layout dependent. - Returns 'short' value - KeyEvent.keyCode() returns a short value, instead of int - KeyEvent.keyCode() shall return a layout independent value (Bug 641) - To ease implementation, we only 'require' the scan code to be mapped to a 'US Keyboard layout', which allows reusing layout dependent code while preserving the goal to have a fixed physical key association - Implementation status: - Windows OK - X11 TODO - OSX: 50/50 TODO - Using layout independent 'action keys' - Using layout dependent 'printable keys' - returning above semantics for both, keyCode and keySym - Android 50/50 TODO - Returning the layout independent keyCode - Mapping probably incomplete - KeyEvent.EVENT_KEY_TYPED and KeyListener.keyTyped(KeyEvent) (Bug 688) - Marked DEPRECATED - No more called for auto-repeat events - Synthesized in WindowImpl.consumeKeyEvent(..): No more injection by native- or java driver code - NEWTEvent.eventType: int -> short - field, as well as all method involving eventType changed to short. - NEWTEvent.isSystemEvent: REMOVED - Never used as well as never being implemented properly Internal Changes: - Simplified keyEvent driver code - Especially the Windows native driver's mapping code could be simplified using scanCode and MapVirtualKeyEx - NEWT Event Factories: hashMap -> switch/case Unit Tests: - - Added NewtCanvasAWT Offscreen Layer Tests important to test the AWT -> NEWT translation on OSX/CALayer: - TestNewtKeyCodeModifiersAWT - TestNewtKeyCodesAWT - TestNewtKeyEventAutoRepeatAWT - TestNewtKeyEventOrderAWT - TestNewtKeyPressReleaseUnmaskRepeatAWT commit a40ee817a3bd537b0de7018772b0835f995a1bed Author: Sven Gothel Date: Sun Feb 17 21:24:46 2013 +0100 Unit Tests: Add 'results-java7' to check-junit.sh (Completes commit fc9539d50c12f9def7a3babde7384e3d38f61721) commit fc9539d50c12f9def7a3babde7384e3d38f61721 Author: Sven Gothel Date: Sun Feb 17 20:54:27 2013 +0100 Unit Tests: Use Property 'jvmJava.exe' ; Add target 'junit.run.local.java7' (if="jvmJava7.exe") See GlueGen commit 6b86764f2e195b4046000fd5a7fcf3331ca72d21 commit fdc20a0205bb01747055910eb2bb33202edee277 Author: Sven Gothel Date: Sun Feb 17 18:55:18 2013 +0100 OSX/Java7 Cleanup: Remove JavaNativeFoundation dependency; NativeWindow-JAWT: Remove c.fixup.jawt.version.macosx (redundant, libjawt.dylib is rpath'ed always) commit f937a727354fc24321d40df95008d569972ed169 Author: Sven Gothel Date: Sun Feb 17 17:40:04 2013 +0100 Add proper copyright header w/ all remarks regarding re-distribution etc, similar to other JNI headers commit 68cc962abb7ca422bb9af6f4a5366eb2b428e04f Author: Sven Gothel Date: Sun Feb 17 03:27:36 2013 +0100 build-test.xml: Move 'junit.run.newt.awt' up in file; 'junit.run.newt': Exclude *AWT* and *SWT* (similar to 'junit.run.newt.headless') commit 8edaa9780455b60f6034a78970cab4f516d4b061 Author: Sven Gothel Date: Sun Feb 17 03:25:34 2013 +0100 NEWT/OSX: Fix Memory Leak ; Fix Occasional Crash Duer to Lifecycle Ops not on Main-Thread. - Fix Memory Leak - NewtWindow::dealloc -> [NewtView release]: Fixes NewtView leak - NewtView::dealloc -> removeTrackingRect: Removes occasional crash (double free of TrackingRect) - Fix Occasional Crash Duer to Lifecycle Ops not on Main-Thread. Perform OSX WindowDriver ops on Main-Thread: - close0 - changeContentView0 - createWindow0 - Cleaned up AddRemove unit tests, added TestAddRemove03GLWindowNEWT commit 674004cd67105b27b63c7ac2f05738f21864bdc0 Author: Sven Gothel Date: Sat Feb 16 20:10:23 2013 +0100 TestWindowClosingProtocol01AWT: More relaxed timing reducing false positives commit 87b5d10bc6d9025de410bcd23b8d33ccdb13901d Author: Sven Gothel Date: Sat Feb 16 20:09:35 2013 +0100 Uni Tests AddRemove: Remove dead code .. commit 1cee0f1ac437de952c5cc15d5a23c8c5ddfdda8a Author: Sven Gothel Date: Sat Feb 16 20:04:24 2013 +0100 Fix Bug 644: AWT GLCanvas and GLJPanel ignored their visibility state If !visible, GLCanvas and GLJPanel's paint* and display method shall not render as the other GLAutoDrawable impl. do (GLWindow, SWT GLCanvas). commit 26a2496d9be3360aefc853fabb9dee2dc3327571 Author: Sven Gothel Date: Sat Feb 16 05:00:38 2013 +0100 Fix TestWindowClosingProtocol01AWT: GLCanvas closing operation 'destroy' will no more call removeNotify() - see commit 3567e7e8519f82720f98b0b2ac30456cbfeddc0d commit 2ff795342c720b3b807135c632785e18cee29334 Author: Sven Gothel Date: Sat Feb 16 03:59:31 2013 +0100 X11/WGL: Better Exception Message for failed ARB context creation if profile > GL2 (OpenGL >= 3.0.1) was requested. commit a94ff9252df66c303f48489c3e8926104941465c Author: Sven Gothel Date: Sat Feb 16 03:55:22 2013 +0100 Fix Bug 691 (part-3): NSOpenGLLayer::openGLContextForPixelFormat(..) on main-thread deadlock'ed due to locked shared context NSOpenGLLayer::openGLContextForPixelFormat(..) is performed on main-thread at 1st NSOpenGLLayer display method. This happened irregulary, i.e. sometimes (T0) right after NSOpenGLLayer creation and attachSurfaceLayer()/AddCASublayer(..), sometimes later (T1). NSOpenGLLayer::openGLContextForPixelFormat(..) uses the passed shared user context. The shared user context is locked at NSOpenGLLayer's creation (T0) and if performed at this early time the call deadlocks due to pthread_mutex wait for the shared user context. This fix performs NSOpenGLLayer creation and layer attachment while the shared user context is kept unlocked and enforces NSOpenGLLayer display and hence NSOpenGLLayer::openGLContextForPixelFormat(..). Added CGL.setNSOpenGLLayerEnabled(..) to enable/disable NSOpenGLLayer - currently not used. - Passed AddRemove tests for GLCanvas/Swing and GLWindow/NewtCanvasAWT w/ 100 loops on Java6 and Java7 on OSX. - Passed Instruments Leaks test w/ 10 loops on Java6 and Java7 commit d178475967536f4d1e58fd6e0be49b03fe4cd4b7 Author: Sven Gothel Date: Fri Feb 15 18:01:20 2013 +0100 Refine unit test for Bug 691: Add onscreen/offscreen tests [if available] ; Move tests to 'acore'. commit 3567e7e8519f82720f98b0b2ac30456cbfeddc0d Author: Sven Gothel Date: Fri Feb 15 17:44:37 2013 +0100 Fix Bug 675: NPE w/ Beans.setDesignTime(true) ; Fix GLCanvas.destroy(): Don't issue removeNotify(), delete drawable and context only! - Fix Bug 675: NPE w/ Beans.setDesignTime(true) - Carefully consider Beans.isDesginTime() fixes NPE - added unit test - Fix GLCanvas.destroy(): Don't issue removeNotify(), delete drawable and context only! - AWT removeNotify() shall only be issued via AWT itself, not manually - Add 'destroyImpl(boolean destroyJAWTWindowAndAWTDevice)' to be called by - GLCanvas.destroy(): destroyImpl( false ); - GLCanvas.removeNotify(): destroyImpl( true ); - Ensures JAWTWindow and AWTDevice are created and destroyed via the AWT callbacks addNotify() and removeNotify() only. commit 2aeff053c55dadafb94bfbba661250e0c96f1fe5 Author: Sven Gothel Date: Fri Feb 15 17:15:49 2013 +0100 Fix Bug 691 (part-2): Extra '[subLayer release]' is wrong, since 'CGL.releaseNSOpenGLLayer' triggers release - but very late w/ AWT usage. OSXUtil_RemoveCASublayer0's added '[subLayer release]' in commit f6e6fab2a7ddfb5c9b614cb072c27ff697629161 is wrong, since 'CGL.releaseNSOpenGLLayer' actually does trigger it's release. This was not seen w/ AWT tests, since it happens very later. A NewtCanvasAWT test disclosed this error -> removed that extra release call. The culprit for the late release w/ AWT usage was CGL.createNSOpenGLLayer's call in the current thread. Moving it to the Main-Thread fixed the problem. All CALayer lifecycle calls are issued on the Main-Thread now. NSOpenGLLayer's CVDisplayLink OpenGL fitting via 'CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext' is now performed at it's context creation in 'NSOpenGLLayer::openGLContextForPixelFormat'. The 'extra' release of the NSOpenGLLayer's NSOpenGLContext as introduced in commit f6e6fab2a7ddfb5c9b614cb072c27ff697629161 is still valid. commit f6e6fab2a7ddfb5c9b614cb072c27ff697629161 Author: Sven Gothel Date: Thu Feb 14 15:12:18 2013 +0100 Fix OSX CALayer Bug 690 and Bug 691: Occasional Freeze on CVDisplayLinkStop; Layers and native GL-Context are _not_ Released ; Java Side wait for Main-Thread - Fix Bug 690: Occasional Freeze on CVDisplayLinkStop - NSOpenGLLayer.disableAnimation() shall not claim the renderLock mutex, since the CVDisplayLink callback could be waiting for the lock. This waiting callback could freeze the call to CVDisplayLinkStop. - Fix Bug 691: Layers and native GL-Context are _not_ Released - Following proper release cycle: Context unrealized: - JAWTWindow.detachSurfaceLayer() -> OSXUtil.RemoveCASublayer(..) - CGL.releaseNSOpenGLLayer(..) JAWTWindow.destroy() - MacOSXJAWTWindow.UnsetJAWTRootSurfaceLayer(..) - OSXUtil.DestroyCALayer(..) - 'Magic' CALayer release calls (w/o manual retain beforehand) at: - OSXUtil.RemoveCASublayer(..): [subLayer release] - MacOSXJAWTWindow.UnsetJAWTRootSurfaceLayer(..): [rootLayer release] - OSXUtil.DestroyCALayer(..): [rootLayer release] - 'Magic' NSOpenGLLayer's NSOpenGLContext dealloc: - [NSOpenGLContext clearDrawable] - CGLDestroyContext( [NSOpenGLContext CGLContextObj] ) - Java Side wait for Main-Thread - Waiting for the delegated Main-Thread on the Java side eases debugging and won't block the Main-Thread in native code. - Utilizing this for all CALayer calls Test case: TestGLCanvasAddRemove01SwingAWT commit c9a13b31703302f58100af2a3f437ff7cb8fd010 Author: Eric Brayet Date: Mon Jan 28 14:41:10 2013 +0100 Fix bug 668 : Android keyboard input was uppercase commit d47794338ea218d1be2d21a91c8eea44d83dcb0a Author: Sven Gothel Date: Tue Feb 12 04:07:24 2013 +0100 Java2D OGLPipeline(GLJPanel+Threading): More fine grained control about OGL threading and resource usage - Still excluse OSX - Respect sun.java2d.opengl property - [Prepare] Allowing OGLPipeline thread usage w/o it's OGL resource usage commit 6d508eb203fea16e094039b27a7368748aff122b Author: Sven Gothel Date: Mon Feb 11 23:43:16 2013 +0100 GLContext: *TRACE_SWITCH spacing commit feebfdea24f8ac98282751824aa4d3569bb71d93 Author: Sven Gothel Date: Fri Feb 1 12:41:53 2013 +0100 Fix Animator resume() wait-condition (drawablesEmpty didn't wait for pausedIssued); Update TestGLWindows02NEWTAnimated (isPaused()) commit 1fcf7abad54528bb36da6ac70930bbe1005876d0 Author: Sven Gothel Date: Thu Jan 31 21:24:32 2013 +0100 Android GearsES2 Launcher: Revert debug flags .. commit af59808d5097b9cfc79b630a05f6846bc0d07878 Author: Sven Gothel Date: Thu Jan 31 21:21:57 2013 +0100 Android: Adapt to cleanup of ClassLoaderUtil/LauncherUtil - GlueGen Commit b47d0d92dd222999bf38633de1cec8de6a7ad369 commit 2aed701ff4385cd903ad18ce8327c058ce847134 Author: Sven Gothel Date: Thu Jan 31 21:19:47 2013 +0100 Bump Android NDK to android-ndk-r8d commit ae89ca7342b8673e38b7d76bff386175e84a9173 Author: Xerxes Rånby Date: Thu Jan 31 16:47:06 2013 +0100 LinuxEventDeviceTracker: Map printable char using KeyEvent.isPrintableKey. The NEWT VK namespace tries to map keyCodes to its Unicode varianti, make use this quirk. Signed-off-by: Xerxes Rånby commit f8bc0add2e3d18c397fb2af59e3787baa9dfc771 Author: Xerxes Rånby Date: Thu Jan 31 13:42:27 2013 +0100 LinuxEventDeviceTracker: LinuxEVKey2NewtVKey(EVKey 122-248) Signed-off-by: Xerxes Rånby commit 72bf6f4c6bc19aade075f10db4a26e3cf7cfc5ee Author: Xerxes Rånby Date: Thu Jan 31 01:43:01 2013 +0100 LinuxEventDeviceTracker: LinuxEVKey2NewtVKey(EVKey 0-121) Signed-off-by: Xerxes Rånby commit ff39f9e5a37020d72af3d4f1ea8fe0b6b6714016 Author: Xerxes Rånby Date: Thu Jan 31 00:18:33 2013 +0100 LinuxEventDeviceTracker: gracefully manage hot-swap of USB devices. Signed-off-by: Xerxes Rånby commit 8d6438eb6b03013012e3a357d92aa3cd40ee55c0 Author: Xerxes Rånby Date: Wed Jan 30 23:49:37 2013 +0100 LinuxEventDeviceTracker: LinuxEventDeviceManager monitor /dev/input/event* The LinuxEventDeviceManager will start new EventDevicePoller threads when more /dev/input/event* files become available. Signed-off-by: Xerxes Rånby commit 1f7b17a93aa2cf21bc943b54d764d6f283c808de Author: Xerxes Rånby Date: Thu Jan 17 16:35:01 2013 +0100 Add LinuxEventDeviceTracker used by RaspPi newt/driver/bcm/vc/iv/WindowDriver Signed-off-by: Xerxes Rånby commit cedbdb09c00bb2a32cc065cb75590f3571bb7aa1 Author: Sven Gothel Date: Wed Jan 30 20:41:11 2013 +0100 Fix AWTKeyAdapter: Reorder AWT events to NEWT order - also ensuring TYPED is always sent. This foremost fixes an issue w/ OSX/Java7 and NewtCanvasAWT offscreen CALayer usage, which utilizes AWTKeyAdapter and AWTNewtEventFactory (AWT -> NEWT) key events. commit 4d6983ca087feb0544c27326c8bf470444df2eec Author: Sven Gothel Date: Wed Jan 30 16:24:14 2013 +0100 Add OSX Java7 build/test scripts commit a456289c45a167269fa1bf839316164781801817 Author: Sven Gothel Date: Tue Jan 29 21:50:28 2013 +0100 OSX unit tests: Disable OSX 32bit tests (redundant - prepare for Java7 tests) commit 90e136b65a10d8daf8c3a2df6cc193e55a63722c Author: Sven Gothel Date: Tue Jan 29 21:27:57 2013 +0100 Fix Bug 678: Deliver key-char value for printable chars on all KeyEventListener (-> On Windows as well) The following is observed, where t0 and t1 refer to subsequent different timestamps: NEWT delivery order: PRESSED (t0), RELEASED (t1) and TYPED (t1) WINDOWS delivery order: PRESSED (t0), TYPED (t0) and RELEASED (t1) Windows Auto-Repeat: PRESSED (t0), TYPED (t0) Hence we changed the event reorder-code in NEWT to trigger NEWT-PRESSED on Windows-TYPED for printable chars, assuring key-char values on all listener callbacks. - KeyEvent.getKeyChar(): Removed disclaimer dedicated for Windows - Keyevent.isActionKey(): Completed for all NEWT non-printable action keys; Added static variant - Keyevent.isPrintableKey(): NEW: returns !isModifierKey(keyCode) && !isActionKey(keyCode) ; With static variant - Windows WindowDriver: - EVENT_KEY_PRESSED handles non-printable chars only - EVENT_KEY_TYPE handles printable chars only - Native: VK_DELETE passes keyCode - Unit tests: Wait for completion 1s -> 2s commit 2f63a43fd6ff9964251c43e248c51bc821f3ecbd Author: Sven Gothel Date: Mon Jan 28 16:15:50 2013 +0100 Add WindowClosingProtocol impact detail on WindowListener.windowDestroyNotify(..) commit 2fe180fbee15b82e2ae14fe3c95887db246c874d Author: Sven Gothel Date: Sun Jan 27 14:08:07 2013 +0100 Bug 665 (part 3) - Allow dis-association of GLContext's GLDrawable .. - Add EGL/ES2 tests, attempt to fix wrapped EGL case - Bug 665 (part 2) was commit 7fd5f76e1eb4bbf93fe9b1171744bd755d8f96e4 - Add EGL/ES2 tests in - TestGLContextDrawableSwitch01NEWT - TestGLContextDrawableSwitch11NEWT - Attempt to fix wrapped EGL case (incomplete) - Using EGL/ES w/ non native EGL device/surface, but natively wrapped instances (most of the cases), a 'complicated' delegation of Native-Upstream -> EGL-Proxy -> EGL-Instance is being used heavily relying on the objects lifecycle. GLEventListenerState tries to roll back the realized state and even sets the upstream device handle, but this doesn't seem to be sufficient on X11. Discussion: It might turn out that we only can implement the survival of GLContext and it's display device reliable w/ EGL within the GLAutoDrawable implementation, which can hold the previous not destructed instances. commit 3f4eeaf76efa8f1f8b305c8dc1770dc679ced307 Author: Sven Gothel Date: Sun Jan 27 05:48:13 2013 +0100 Fix regression of commit b738983638703bb721ee4c9820c8ef43e2252e73, possible 'pulling' display's device - check references commit 336c8fc0b4f419196fe31f7dc86eed310160acaf Author: Sven Gothel Date: Sun Jan 27 04:37:33 2013 +0100 GLDrawableHelper.invoke: If drawable is !realized -> deferred execution commit 4e9054d996870467182b0e963fa80aa6740968b6 Author: Sven Gothel Date: Sun Jan 27 04:36:53 2013 +0100 Fix misc API docs .. commit 02104525a63aed70c51b825be0e8c83ed17cfa31 Author: Sven Gothel Date: Sun Jan 27 04:32:01 2013 +0100 Animator: API doc cleanup, isPaused()==true if drawablesEmpty (Animator == FPSAnimator behavior), resume after add ifPaused() - GLAnimatorControl: Refine API doc - Animator.run(): - if( drawablesEmpt) { pausedIssued = true; } - Same behavior as FPSAnimator - AnimatorBase.add(..) - consider paused case if no drawablesEmpty, i.e. if ( isPaused() ) { resume(); } commit 07fb6ebb3fa95e8d722505883a13c62e13c7f953 Author: Sven Gothel Date: Sat Jan 26 07:43:08 2013 +0100 Refine GL[Auto]Drawable 'realized' state in API doc, and relax it's realized requirement in GL[Offscreen]AutoDrawableDelegate* Compatible w/ 'before'. TODO: Contemplate about GLDrawableFactory.createOffscreenAutoDrawable(..) whether it: - should better return an unrealized [auto]drawable - or adding another API method for such case Goal: Allow passing vector of [device/context/..] for use cases such as re-using an onscreen destructed surface and on-/offscreen hopping. commit 176d2c68842587b55117dbe0df2fbd2932d0cd10 Author: Sven Gothel Date: Sat Jan 26 05:58:23 2013 +0100 WGLContext: Enhance DEBUG output for failed makeCurrentImpl(..) commit 7fd5f76e1eb4bbf93fe9b1171744bd755d8f96e4 Author: Sven Gothel Date: Sat Jan 26 05:58:10 2013 +0100 ProxySurface: Add 'NativeSurface getUpstreamSurface()' ; ProxySurfaceImpl: Don't cache 'displayHandle' - ProxySurface: Add 'NativeSurface getUpstreamSurface()' allowing querying direct access of a backing surface representing this instance. - Use case: EGLWrappedSurface - Default impl. returns null - ProxySurfaceImpl: Don't cache 'displayHandle' - getDisplayHandle() is 'final', no more 'shortcut' code allowed due to re-association incl. display handle. - See commit b738983638703bb721ee4c9820c8ef43e2252e73 commit e6ccafabb8fefa2381e7c102ca9cba4ef7555035 Author: Sven Gothel Date: Sat Jan 26 05:52:24 2013 +0100 [EGL/X11]Context: Enhance DEBUG output for failed makeCurrentImpl(..) commit 9505d48f1702e2ba8c9e72edcbb8fab5ad01bc56 Author: Sven Gothel Date: Sat Jan 26 05:21:17 2013 +0100 FBObject/GLFBODrawableImpl: Silence stderr if not in DEBUG mode relying on application handling verbosity and debug output The following cases were dumping states on stderr: - FBOObject.isStatusValid() if false -> Only dumps if DEBUG - GLFBODrawableImpl.reset() if fboResetQuirk becomes true and 1st time in ClassLoader -> Only dumps if DEBUG commit b738983638703bb721ee4c9820c8ef43e2252e73 Author: Sven Gothel Date: Thu Jan 24 17:24:22 2013 +0100 Bug 665 (part 1) - Allow dis-association of GLContext's GLDrawable .. Changes allowing re-association (incl. null) of GLContext/GLDrawable: - GLAutoDrawable: Refine API doc 'setContext(..)' - GLContext: Refine API doc: 'setGLDrawable(..)' 'getGLDrawable()' - GLContextImpl.setGLDrawable(): Handle null drawable - GLAutoDrawableDelegate/GLAutoDrawableBase: Allow null GLContext - GLDrawableHelper.switchContext(..)/recreateGLDrawable(): Balance GLContext.setGLDrawable(..) calls - New GLEventListenerState, holding state vector [GLEventListener, GLContext, .. ] impl. relocation of all components from/to GLAutoDrawable. - GLDrawableUtil - Using GLEventListenerState for swapGLContextAndAllGLEventListener(..) +++ NEWT Window*: - getDisplayHandle() is 'final', no more 'shortcut' code allowed due to re-association incl. display handle. - close*: - close config's device (was missing) - null config +++ Changes allowing reconfig of Display handle as required to re-associate pre-existing GLContext to a 'window': - AbstractGraphicsDevice: Add isHandleOwner() / clearHandleOwner() - Impl. in X11GraphicsDevice and EGLGraphicsDevice, NOP in DefaultGraphicsDevice - DefaultGraphicsConfiguration add 'setScreen(..)' - MutableGraphicsConfiguration - Make DefaultGraphicsConfiguration.setScreen(..) public - NativeWindowFactory add 'createScreen(String type, AbstractGraphicsDevice device, int screen)' - Refactored from SWTAccessor - NativeWindow x11ErrorHandler: Dump Stack Trace in DEBUG mode, always. commit 85d70b7d38885fa8ba6374aa790d5a296acc8ec1 Author: Sven Gothel Date: Sun Jan 20 15:05:02 2013 +0100 Android: Allow selection of native window formats RGBA8888, RGBX8888 and RGB565; Fix HiSilicon/Vivante/Immersion.16 EGLConfig selection (zero depth buffer @ visualID) - NEWT/Android Fix PixelFormat/NativeWindowFormat/VisualID Selection - Fix allows proper selection of native window formats: RGBA8888, RGBX8888 and RGB565 - Selection is performed in 3 steps: 1) @ Construction (non native): SurfaceHolder.setFormat( getSurfaceHolderFormat( caps ) ) 2) @ Native Surface Creation: getANativeWindowFormat( androidFormat) -> ANativeWindow_setBuffersGeometry(..) Note: The set native format is revalidated, i.e. read out via ANativeWindow_getFormat(..). 3) @ EGL Creation: ANativeWindow_getFormat(..) -> fixCaps(..) - simply fixing the chosen caps. - NEWT GLWindow.GLLifecycleHook.resetCounter: - Also reset GLAnimatorControl's counter, if attached. - NEWT WindowImpl -> GLLifecycleHook.resetCounter() calls issued _after_ operation before unlock(). - JOGL/EGLGraphicsConfigurationFactory - Validate whether the visualID matching EGLConfig depth buffer is suitable. On HiSilicon/Vivante/Immersion.16: Depth buffer w/ matching visualID is zero! - NativeWindow/Capabilities.compareTo: Fix alpha comparison commit 0989484b89535d56e9f150cdf63e2a17bf36e32e Author: Sven Gothel Date: Sat Jan 19 22:13:34 2013 +0100 Android/NewtVersionActivity: Dump avail. GLCaps / Use stderr, since log would cap 'em (too long). commit c27f0b37024b8a991512ad8d0856821804bb3692 Author: Sven Gothel Date: Sat Jan 19 20:05:48 2013 +0100 TestSwingAWTRobotUsageBeforeJOGLInitBug411: Fix 'chicken egg' init problem w/ AWTRobot, i.e. NativeWindow not yet initialized. Regression since: 50f997557b91a2f014ef0c2ea848c5c326d0cfb2 commit c59f78a4c3dbe9bb63119d1ece781d8f732b58e4 Author: Sven Gothel Date: Sat Jan 19 09:20:10 2013 +0100 Adapt to change 5060b728b26a89a14367f8fca9f4eb7968f719ca: ShaderState.uniform(..) returns false if no location available. commit 50f997557b91a2f014ef0c2ea848c5c326d0cfb2 Author: Sven Gothel Date: Sat Jan 19 07:04:56 2013 +0100 NEWT/Android: Full Lifecycle for WindowDriver; Using static ViewGroup; AWTRobotUtil: More tolerant for non AWT env.; Fix adb-launch-* - NEWT/Android WindowDriver - Full Lifecycle, remove refs on closeNative() - Respect isFullscreen() - Using static ViewGroup if available and surface not ready, allows running from main() - AWTRobotUtil: More tolerant for non AWT env. - Check for NEWT first - Only use AWT iff available, which allows running on Android - Fix adb-launch-* - Launch main/junit tests commit 34687193484b2404d83eebf5d008b71d54e52286 Author: Sven Gothel Date: Fri Jan 18 03:38:35 2013 +0100 Fix Bug 669: Recursive GLContext makeCurrent()/release() Culprit: GLContext's makeCurrent() didn't clear the boolean flag 'unlockContextAndSurface' in case the context is already current (-> recursion). Above case was detected within a code block tailed by a finally block, which acted on mentioned flag, i.e. called lock.unlock() and hence decremented the lock count even though the method return w/ successful state. Fixed. Added debug code: GLContext.release() debug code (DEBUG | TRACE_SWITCH), recording stack trace of last release() call, which is dumped in case no current was current. Added 2 unit tests: - Simple recursive GLContext makeCurrent()/release() from within GLEventListener's display(). Test also validates lock count and lock ownership. - GLAutoDrawable display() of another GLAutoDrawable from within GLEventListener's display(..). commit 896a0821b78c9aadf38e0d881922e03849584984 Author: Sven Gothel Date: Fri Jan 18 02:23:44 2013 +0100 Sync LauncherUtil w/ GlueGen commit 1b9f0739ecc25105384b557afa698c42e08d4cc6 (adding main-cmdline-args) commit 9c189b4202b25f08b0bddd9dcda4f085ec85912b Author: Sven Gothel Date: Wed Jan 16 17:34:28 2013 +0100 README: Add new IRC channel, mark Jabber deprecated commit f89fab356c556bff91cfc74e1f723ae5477de9db Author: Sven Gothel Date: Wed Jan 16 17:33:06 2013 +0100 README: Add new IRC channel, mark Jabber deprecated commit 5060b728b26a89a14367f8fca9f4eb7968f719ca Author: Sven Gothel Date: Tue Jan 15 19:24:50 2013 +0100 ShaderState: Reduce hash-map utilization at shader switch (reset uniforms/attributes); Refine API doc. commit 7c1b15bfb00b36e80284701b1ede992b7eb82ef4 Author: Xerxes Rånby Date: Tue Jan 15 15:56:31 2013 +0100 LinuxMouseTracker: Fix inverted Y-axis & missing button release. Signed-off-by: Xerxes Rånby commit da14d647581751f3d2f6d651741eaec485e255b5 Author: Sven Gothel Date: Mon Jan 14 05:58:21 2013 +0100 NEWT-MouseEvent getWheelRotation() API Update - Fixes Bug 659: NEWT Horizontal Scrolling Behavior (OSX, X11, Win32); Bug 639: High-Res Mouse-Wheel - API update 'float getWheelRotation()': Usually a wheel rotation of > 0.0f is up, and < 0.0f is down. Usually a wheel rotations is considered a vertical scroll. If isShiftDown(), a wheel rotations is considered a horizontal scroll, where shift-up = left = > 0.0f, and shift-down = right = < 0.0f. However, on some OS this might be flipped due to the OS default behavior. The latter is true for OS X 10.7 (Lion) for example. The events will be send usually in steps of one, ie. -1.0f and 1.0f. Higher values may result due to fast scrolling. Fractional values may result due to slow scrolling with high resolution devices. The button number refers to the wheel number. - Fix Bug 659: NEWT Horizontal Scrolling Behavior (OSX, X11, Win32) - See new API doc above - X11/Horiz: Keep using button1 and set SHIFT modifier - OSX/Horiz: - PAD: Use highes absolute scrolling value (Axis1/Axis2) and set SHIFT modifier for horizontal scrolling (Axis2) - XXX: Use deltaX for horizontal scrolling, detected by SHIFT modifier. (traditional) - Windows/Horiz: - Add WM_MOUSEHWHEEL support (-> set SHIFT modifier), but it's rarely impl. for trackpads! - Add exp. WM_HSCROLL, but it will only be delivered if windows has WS_HSCROLL, hence dead code! - Android: - Add ACTION_SCROLL (API Level 12), only used if layout is a scroll layout - Using GestureDetector to detect scroll even w/ pointerCount > 2, while: - skipping 1st scroll event (value too high) - skipping other events while in-scroll mode - waiting until all pointers were released before cont. normally - using View config's 1/touchSlope as scale factor - Fix Bug 639: High-Res Mouse-Wheel - getWheelRotation() return value changed: int -> float allowing fractions, see API doc changes above. - Fractions are currently supported natively (API) on - Windows - OSX - Android - AndroidNewtEventFactory ir refactored (requires an instance now) and AndroidNewtEventTranslator (event listener) is pulled our of Android WindowDriver. commit 955a444939ba67c6077b6937e191719aa184dafe Author: Sven Gothel Date: Sat Jan 12 09:13:23 2013 +0100 Fix Bug 666: GLBase.java line 438 contained some invalid trailing characters (regression from e7064ece049705e013d80985eae698ce0ee3c4e3) commit 64041218f3d5965b9525e8699aa97e9ec751cd95 Author: Sven Gothel Date: Sat Jan 12 09:08:55 2013 +0100 Move all Exclusive Context Thread (ECT) tests to it's own package to de-clutter core test package commit 62c8fcc30dd5f9558df9ca907a6936c7bc252527 Author: Sven Gothel Date: Sat Jan 12 09:04:31 2013 +0100 Adding GEOMETRY_SHADER support in ShaderCode, adding core GL3/GEOMETRY_SHADER unit tests. ; Simplified GLContext version number - Adding GEOMETRY_SHADER support in ShaderCode, adding core GL3/GEOMETRY_SHADER unit tests Chuck Ritola reported in December 2012 that we lack support of GEOMETRY_SHADER and he provided a test case. The latter is cleaned up to use GL3 core profile features only tesing a pass-through and the flip-XYZ geometry shader. ShaderUtil is fixed. - Simplified GLContext version number The OpenGL major/minor version is now hold in a VersionNumber instance to simplify usage. Also expose it via getGLVersionNumber() while marking getGLVersionMajor() and getGLVersionMinor() deprecated. commit a1bc317c24d55da1199450fe4c9c85d1105844b5 Author: Sven Gothel Date: Fri Jan 11 11:01:20 2013 +0100 build/test: newt-headless shall exclude AWT/SWT TestNewtEventModifiersNEWTWindowAWT was incl. in newt headless commit cb3e3638179a360a07325a908da7593f8e285f3c Author: Sven Gothel Date: Fri Jan 11 08:22:11 2013 +0100 Add old Olympic demo from GL4Java - Make it use ES1 and suitable for FixedFunctionEmul. commit bdc2e57ffc91d88e187ded8c42335710448f50f0 Author: Sven Gothel Date: Fri Jan 11 08:14:49 2013 +0100 Minor: GLWindow fix size validation; GLContextImpl: Remove hold ctx lock count constraints at destroy. commit 224fab1b2c71464826594740022fdcbe278867dc Author: Sven Gothel Date: Fri Jan 11 08:13:24 2013 +0100 GLAutoDrawable/AnimatorBase: Add ExclusiveContextThread (ECT) feature; AnimatorBase: Add setModeBits/MODE_EXPECT_AWT_RENDERING_THREAD; FPSAnimator: Make transactions deterministic. ExclusiveContextThread (ECT) allows user to dedicate a GLContext to a given thread. Only the ECT will be allowed to claim the GLContext, hence releasing must be done on the ECT itself. The core feature is accessible via GLAutoDrawable, while it can be conveniently enabled and disabled via an AnimatorBase implementation. The latter ensures it's being released on the ECT and waits for the result. Note that ECT cannot be guaranteed to work correctly w/ native (heavyweight) AWT components due to resource locking and AWT-EDT access. This is disabled in all new tests per default and noted on the API doc. Note: 'Animator transaction' == start(), stop(), pause(), resume(). - Add ExclusiveContextThread (ECT) feature - GLAutoDrawable NEW: - Thread setExclusiveContextThread(Thread t) - Thread getExclusiveContextThread() - AnimatorBase NEW: - Thread setExclusiveContext(Thread t) - boolean setExclusiveContext(boolean enable) - boolean isExclusiveContextEnabled() - Thread getExclusiveContextThread() - AnimatorBase: Add setModeBits/MODE_EXPECT_AWT_RENDERING_THREAD Allows user to pre-determine whether AWT rendering is expected before starting the animator. If AWT is excluded, a more simple and transaction correct impl. will be used. - FPSAnimator: Make transactions deterministic. FPSAnimator previously did not ensure whether a transaction was completed. A deterministic transaction is required to utilize ECT. FPSAnimator now uses same mechanism like Animator to ensure completeness, i.e. Condition and 'finishLifecycleAction(..)'. Both are moved to AnimatorBase. Tested manually on Linux/NV, Linux/AMD, Windows/NV and OSX/NV. - All new tests validated correctness. - All new tests shows an performance increase of ~3x w/ single GLWindow, where multiple GLWindows don't show a perf. increase. commit 6fd9c3d84e1758ae27cd10a89237a558460ca1fb Author: Sven Gothel Date: Thu Jan 3 12:22:54 2013 +0100 Fix GLArrayDataClient createGLSL(..) 'name' setting; Also adds equal behavior for Client/Server FFP usage. - GLArrayDataWrapper's init() only validated and set the 'name' for VBO ARRAY_BUFFER usage and validates it, regardless of FFP or GLSL usage. - GLArrayDataWrapper's init() included the no-VBO case to the above 'name' set/validate code path. commit 921b33825340d27deec2883ded21cb7434decc94 Author: Sven Gothel Date: Mon Dec 31 16:39:15 2012 +0100 Update PNGJ 0.85 -> 1.12 (w/ interlace read support) ; Added PNG Interlace read tests (TestPNGTextureFromFileNEWT) commit 96f8f55a8db5f430fc17ce9ea1bf45e4728ab6ac Author: Sven Gothel Date: Mon Dec 31 15:08:43 2012 +0100 Enhance PMVMatrix: Use FloatStack to implement PushMatrix and PopMatrix (Bug 657) One FloatStack for each, MV, P and T, with initialialSize zero to save memore and growSizes: MV = 16 arrays, P = 2 arrays, T = 2 arrays, with array = 16 floats. This shall save performance due to the preallocated stack when used and growing only in the above mentioned grow intervals. We may finetune the growSize, if required. commit 61eb1060ca535306d6580b23933e25710ece0b14 Author: Sven Gothel Date: Sun Dec 30 19:40:59 2012 +0100 NEWT WindowsWindow.c: UpdateInsets: Fix determiniation of isUndecorated - WS_SYSMENU is _not_ an indication! commit 35236f571a09e1ef21a57693bd2e4d715413f700 Author: Sven Gothel Date: Sun Dec 30 19:40:17 2012 +0100 Bug632: Test NEWT Child Window Translucency (X11/Windows) .. - Windows: Child window is not translucent at all - X11: Child window is translucent to parent's background, however - parents content is _not_ 'composed in'. - TODO: Find whether there is a solution or not. - Note: The child window does not change it's rel. position if parent moves! This is a feature, since we don't have impl. a layout. commit fee7dbecbaaa9a65ff8cb0f54531dada413233d1 Author: Sven Gothel Date: Sun Dec 30 15:10:15 2012 +0100 SharedResourceRunner: Always dump Exception if catched @ creation, not just in DEBUG case. This seems to be crucial, since otherwise user is left in the dark w/o enabling debug flags. commit ece5acb85b3dac22352aca75dd09aadcb96b43f3 Author: Sven Gothel Date: Sun Dec 30 15:09:12 2012 +0100 setGLFunctionAvailability(..): Unify GLInt and GLString version validation; Refines commit b6ae4e4dcbd740dd57de9dc3280d943e98cdaa76 - Limit getGLIntVersion() w/ non ARB ctx to 3.0 - similar to getGLVersionNumber(.., String). - GLInt only proceeds w/ valid version - Always test GLInt version before GLString version, cont. w/ GLString version if GLInt failed. - Fail if strictMode and GLInt failed, but GLString reports GL >= 3.0 - Fail is strictMode and neither GLInt nor GLString could validate version - Clear glError before succeeding (could be tainted by GLInt version test) commit b6ae4e4dcbd740dd57de9dc3280d943e98cdaa76 Author: Sven Gothel Date: Sun Dec 30 10:53:50 2012 +0100 Cleanup / Simplify: setGLFunctionAvailability(..) / createContextARBVersions(..) GL Version Validation String or integer based GL version validation now happens in setGLFunctionAvailability(..) depending on the requested profile. Due to the 'strictMatch' argument the method fails early when unsatisfied also allowing to simplify createContextARBVersions(..) implementation. commit 3ce0aa6e36d9474ac3105cab491a60327860757d Author: Sven Gothel Date: Sat Dec 29 23:37:36 2012 +0100 Fix Bug 658 (Mesa 9.0 3.1 Intel compat quirk, 3.1 core only) ; No PROFILE_ALIASING compat -> core ; Fix setGLFunctionAvailability(..) failure path @ profile query - Add GLRendererQuirks.GLNonCompliant, marking a GL context/profile non compliant. Currently: 'Mesa DRI Intel(R) Sandybridge Desktop' && 3.1 compat profile - Fix Bug 658 (Mesa 9.0 3.1 Intel compat quirk, 3.1 core only) Detect case using new GLRendererQuirks.GLNonCompliant in setGLFunctionAvailability() and return 'false'. - No PROFILE_ALIASING compat -> core Use true core GL profiles / context if available to ensure proper API behavior across platforms due to different functionality. E.g. don't use GL3bc if GL3 is requested. - Fix setGLFunctionAvailability(..) failure path @ profile query Destroy temp context & zero result to cont. iterating through GL versions. This missing cleanup lead to returning the faulty GL context handle and it's mapping/usage. commit 74d8e51e1cbb436eab6b90f78de90dacd10e60a5 Author: Sven Gothel Date: Sat Dec 29 11:58:20 2012 +0100 Adapt change of commit d93c5d23e304ea20e868595748f92a5bef4f5703 to unit test (GLCanvas realization point) commit d93c5d23e304ea20e868595748f92a5bef4f5703 Author: Sven Gothel Date: Fri Dec 28 14:10:14 2012 +0100 AWT GLCanvas: More strict GLDrawable realization [on AWT-EDT], skip if creation is not possible on AWT-EDT. The Intel HD3000 OpenGL driver on Windows will deadlock @ SwapBuffers in case the drawable is created on a thread other than the window owner thread. We are aware of such possibilities, nevertheless the AWTEDTExecutor.singleton.invoke(..) allowed to execute the runnable in case it cannot be invoked on AWT-EDT. The latter is the case if the current thread is not the AWT-EDT _and_ is holding the AWT tree-lock. With GlueGen commit 0b43b43f889ad7fc220942b0076e2001ca3cf13f, the invoke method now consumes an argument allowing to restrict the execution to AWT-EDT only. In such case, the drawable will be realized at a later time from the AWT-EDT. Such a situation could be triggered if a Frame's setVisible(true) is not issued from the AWT-EDT, as it should be! However, to relax such use cases - we better recognize such possible dealock and avoid it. commit f514582845efaf2bf41cbcbeb1e2378d224b11a3 Author: Sven Gothel Date: Thu Dec 27 07:24:06 2012 +0100 adb-launch-main.sh: ANDROID_SDK_HOME -> ANDROID_HOME commit 57c4e440ffa53ba7f868a145212df78e2eb2f8f2 Author: Sven Gothel Date: Thu Dec 27 06:01:56 2012 +0100 Android build scripts: Fix env. name ANDROID_SDK_HOME -> ANDROID_HOME Intuitively I assumed ANDROID_SDK_HOME to be pointing to the SDK root dir, however this is not true: Semantics by Android tools are: ANDROID_SDK_HOME - Users ~/.android folder ANDROID_HOME - SDK root folder commit 796ac5af822f74dd3534f3192f13c398bacd6f07 Author: Sven Gothel Date: Tue Dec 25 08:27:16 2012 +0100 NEWT/Android: Fix NewtBaseActivity.getWindow() recursion if used w/o delegated Activity, i.e. our ActivityLauncher (Completes commit a35beb22d712b6da85a794115b19d484a12c8643) commit 3cb2d5c1714b7b371ebd979304bb1e09a193f228 Author: Sven Gothel Date: Tue Dec 25 05:18:14 2012 +0100 Test*NewtEventModifiers*: Clear 'clearing' events on thread - @Before/@After -> execOffThreadWithOnThreadEventDispatch Remaining 'clearing' events from _releaseModifiers() and escape() broke test case. commit b0be3d764fc6ff90457fcb96ea81d53ba04cd420 Author: Sven Gothel Date: Tue Dec 25 03:50:40 2012 +0100 Misc OSX/SWT: OSXUtil.RunOnMainThread(..) refinement; Fix Test*NewtEventModifiers for SWT (TestNewtEventModifiersNewtCanvasSWT) - Misc OSX/SWT: OSXUtil.RunOnMainThread(..) refinement - 'waitUntilDone' is implemented on Java site via lock/wait on RunnableTask to not freeze OSX main thread. - Fix Test*NewtEventModifiers for SWT (TestNewtEventModifiersNewtCanvasSWT) - Deal with SWT's requirement to run the SWT event dispatch on the TK thread, which must be the main thread on OSX. We spawn off the actual test-action into another thread, while dispatching the events until the test-action is completed. - AWTRobot: Add 'void requestFocus(Robot robot, Object obj, int x, int y)' - Use waitForIdle() only if programmed in Robot (Deadlock w/ OSX SWT) - Required for SWT usage (see above) commit a35beb22d712b6da85a794115b19d484a12c8643 Author: Sven Gothel Date: Mon Dec 24 21:38:40 2012 +0100 NEWT/Android: Fix NewtBaseActivity.getWindow() recursion if used w/o delegated Activity, i.e. our ActivityLauncher commit b478cf3ead567fcc79fd8b75cade17efe0af3127 Author: Sven Gothel Date: Mon Dec 24 20:17:52 2012 +0100 WT-NEWT Modifier mapping and test: part-4 (Fix unit tests): BaseNewtEventModifiers ignore more events (clicked, wheel, entered, exited); Fix TestNewtEventModifiersNewtCanvasSWT SWT-Display thread. commit 17fde6c517b4ccf91b07c7e86974019bcbfee642 Author: Sven Gothel Date: Mon Dec 24 08:03:50 2012 +0100 NEWT peserve 'mouseButtonModMask' to be sent for all mouse- and key events. TODO: NEWT Event Factories. Misc: Cleaned up spacing. On some native OS, the accumulation of pressed button modifier-mask is not available, e.g. OS X. NEWT WindowImpl.doMouseEvent(..), invoked by native NEWT events, will track the pressed mouse button modifier-mask, similar to mouseButtonPressed to synthesize the DRAGGED event. Added NEWT WindowImpl.doKeyEvent(..) to honor the pressed mouse button modifier-mask, i.e. pass it w/ key events as well. TODO: Unify synthesization of NEWT event artifacts as described by the above, allowing NEWT event translation to benefit from same code to gain same semantics. Notable: AWTNewtEventFactory and SWTNewtEventFactory commit d45f777e7969769eaa9b7d7f3eb5b34c10268368 Author: Sven Gothel Date: Mon Dec 24 07:01:40 2012 +0100 AWT-NEWT Modifier mapping and test: part-3 (Fix unit tests) - Finetune delay - Wait for eventCount - Fix Listener concurrency - Manually tested (enabled in our unit tests now) - Tool Combinations - NEWT GLWindow - AWT GLCanvas - NewtCanvasAWT - NewtCanvasSWT - On - Linux/X11 - Windows - OSX(+) (+): Failure NEWT: When multiple buttons are pressed, only the last one is visible via modifier MASK. "expected:[button1, button2], have: [button2]" commit f3e2467decf2a5ee47cfb458f7071772f39ea9c6 Author: Sven Gothel Date: Mon Dec 24 01:55:55 2012 +0100 AWT-NEWT Modifier mapping and test: part-3 (NEWT BUTTON MASK always, ..) - AWTNewtEventFactory's awtModifiers2Newt: - always include NEWT BUTTON_MASK (press, release, ..) where AWT doesn't include them at release (it's only a DOWN_MASK). - Test BaseNewtEventModifiers, .. - No need to call super class Before, BeforeClass, .. manually - Use RedSquareES2 as GL demo - Adapt to AWTNewtEventFactory's modifier change above (NEWT BUTTON MASK even at release) - More descriptive error/log text - Added _mandatory_ TestNewtEventModifiersNEWTWindowAWT to test native NEWT behavior. This shall be the golden behavior all translated events shall compare w/. commit 58eb9d922c2a16a2724aaa2188c56784d440fb99 Author: Sven Gothel Date: Sun Dec 23 23:43:48 2012 +0100 Move pre-existing NEWT event test to new dedicated package package: com.jogamp.opengl.test.junit.newt.event commit 7ec58d773535e86e413e3c581a5e5bd734cb1269 Author: Sven Gothel Date: Sun Dec 23 23:33:19 2012 +0100 Fix 13168c99ff9e8bf71c83f1be7afee270a3db4074 / 811e3791b98fea0dfa3b7d301cb532c54df8dc82: AWT-NEWT Modifier mapping - part-2 AWTNewtEventFactory: - getAWTButtonMask() -> getAWTButtonDownMask() - using proper _DOWN_MASK values (regression of commit 13168c99ff9e8bf71c83f1be7afee270a3db4074) - com.jogamp.newt.event.MouseEvent.BUTTON_NUMBER buttons - adding 'ModifierMappings.txt' to API doc header - remove obsolete 'int awtModifiers2Newt(int awtMods, boolean mouseHint)' - 'int awtButton2Newt(int awtButton)' 1:1 button name mapping Tests: - rename TestNewtEventModifiers -> BaseNewtEventModifiers to avoid being picked up by our junit testing framework. The latter tests all classes starting w/ 'Test*' commit 13168c99ff9e8bf71c83f1be7afee270a3db4074 Author: Sven Gothel Date: Sun Dec 23 15:36:09 2012 +0100 Fix commit 811e3791b98fea0dfa3b7d301cb532c54df8dc82: Make AWT usage Java6 clean (was using Java7 stuff); Note: Need to test! commit 97b817685af3fcb67f02ddd50f87627b97dd3e5b Author: Sven Gothel Date: Sat Dec 22 07:18:30 2012 +0100 Bug 642 / Refine 1ae0737f34143a5ed655bd9c4d5fe9b0437c7774: GLCanvas.displayOnEDT: Also check null!=drawable As for 1ae0737f34143a5ed655bd9c4d5fe9b0437c7774, an animator may inject a display Runnable on the EDT before AWT destruction. In case this Runnable is executed after destruction on the EDT - it would fail. commit b1fb2d2b3e565596c585286d0cbec7eb2a07f73d Author: Sven Gothel Date: Sat Dec 22 07:09:47 2012 +0100 Fix regression of commit b8a8fc24a3afb0cb06a31504bdea1a98b8f00ef4: Cache ShaderState for share ctor. commit f358151ca6f5279a3e97547931f915df78d5129c Author: Sven Gothel Date: Sat Dec 22 07:00:25 2012 +0100 Bug 642 / Refine 1ae0737f34143a5ed655bd9c4d5fe9b0437c7774: GLContextImpl.makeCurrent() - Handle !drawable.isRealized() early, don't catch 'create' Exception Catching the createImpl() exception could be confusing, since it shall succeed. Such exception is required to hint a platform bug and to debug it. Hence testing drawable.isRealized() upfront is preferrable, i.e. catching a well known case for returning CONTEXT_NOT_CURRENT. commit 4fa7bfd2018fe5a5c08157a26be22af194839718 Author: Sven Gothel Date: Sat Dec 22 06:06:31 2012 +0100 Bug 642: Refine test case, adding Hw/Lw mix intermediate Container test to avoid remove/add of GL component on Window when moving splitter. commit 1ae0737f34143a5ed655bd9c4d5fe9b0437c7774 Author: Sven Gothel Date: Sat Dec 22 05:40:36 2012 +0100 Fix Bug 642 TestJSplitPaneMixHwLw01AWT (AWT-GLCanvas); Robustness GLContext/GLDrawable - Fix Bug 642 TestJSplitPaneMixHwLw01AWT On Windows platform when mixing hw/lw JSplitPanel, the GLCanvas is removed and added when splitter is moved. The lack of robustness (see below) lead to an exception. Note: Only w/ GLJPanel (no hw/lw mixing) the splitter can be moved in both direction. Only here it is guaranteed that the GL component will survive the action. - Fix AWT-GLCanvas EDT Runnable: swapBuffer().. / display(..) - Check drawable.isRealized() within the lock on the performing thread. This is not possible before issuing the EDT Runnable action since we cannot hold the lock beforehand. - Robustness GLDrawableImpl - boolean realized -> volatile boolean realized - remove 'synchronized' on isRealized() and setRealized(..) - Use dbl-checked locking on 'realized' test for swapBuffers() and setRealized(..) - Robustness GLContextImpl - Catch createImpl(..) exception and properly return CONTEXT_NOT_CURRENT commit 99b79930f6b25bf8b8bc29dc9a36b33717bdbf0e Author: Sven Gothel Date: Sat Dec 22 01:42:35 2012 +0100 *Drawable impl. DEBUG: Add getThreadName() to debug out. commit 0c8ed3a90eb590a16ff31d241c906a8e8936e270 Author: Sven Gothel Date: Fri Dec 21 19:25:21 2012 +0100 FBObject, minor edit: GL2GL3.GL_MAX_COLOR_ATTACHMENTS -> GL2ES2.GL_MAX_COLOR_ATTACHMENTS commit 13600772542d9d5ad65c6d73b3d568100d6445b6 Author: Sven Gothel Date: Fri Dec 21 19:24:51 2012 +0100 GLContextImpl: Make createContextARBImpl/setGLFunctionAvailability more robost while detecting erroneous queried GL version commit cdd6b8fe25581b127e36f713e31c84af2d72945e Author: Sven Gothel Date: Thu Dec 20 10:35:53 2012 +0100 Bug 651: Mesa3D: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_TEXTURE_IMAGE_UNITS) ; Add unit test / bisect Mesa3D This bug lies within Mesa3D (any renderer) and is fixed in commit 8dc79ae7d73cf6711c2182ff9a5d37ef6c989d23. Mesa3D Version 9.0 still exposes this bug, where 9.0.1 has it fixed w/ above commit. commit 1062e8ebfd6d2643bba9a68bbbc78bb44b3ede6a Author: Sven Gothel Date: Sun Dec 16 08:23:32 2012 +0100 Cleanup atomic JARs; Removed Debug/Trace pipelines of common profiles GLU: jogl-glu.jar <- jogl-glutess.jar, jogl-glumipmap.jar and javax/media/opengl/glu/* javax/media/opengl/glu/gl2es1/* jogamp/opengl/glu/* jogamp/opengl/glu/error/* jogl-glu-gldesktop.jar stays. CORE (jogl.core.jar): + com/jogamp/opengl/util/* + jogamp/opengl/util/* + com/jogamp/opengl/util/glsl/* + jogamp/opengl/util/glsl/* DEBUG/TRACE: Removed Debug/Trace pipelines of common profiles (won't work anyways) - [Debug|Trace]GL2ES1 - [Debug|Trace]GL2ES2 - [Debug|Trace]GL2GL3 commit 52ccfbaedbfc0964b9b9c65984778b68557aa7aa Author: Sven Gothel Date: Sun Dec 16 07:50:38 2012 +0100 test script commit 8ceeb99603bb197b5f2da931c6d1be738df44c45 Author: Sven Gothel Date: Sun Dec 16 07:48:41 2012 +0100 Bug642: Add test case for Swing JSplit Pane w/ GLCanvas and GLJPanel commit 15735cf6861ad12503875f73eafde8b95932c0a8 Author: Sven Gothel Date: Sun Dec 16 07:48:00 2012 +0100 MacOSXCGLContext: Use new setLocation(gl, shader-program); Minor edits.. commit e92823cddc54b0f4fa71e234061a21de6ee5248c Author: Sven Gothel Date: Sun Dec 16 07:47:04 2012 +0100 GLJPanel: Impl. is GLProfile agnostic; Use GLDrawableFactory.createOffscreenDrawable(..) for common OffscreenBackend (dropping pbuffer/software); Flip FBO w/ GLSL texture renderer. - Implementation is GLProfile agnostic - Shall work on ES2, GL2, .. etc - Use GLDrawableFactory.createOffscreenDrawable(..) for common OffscreenBackend (dropping pbuffer/software) - Leave offscreen selection to common factory code, favoring FBO - Flip FBO w/ GLSL texture renderer - Faster on low CPU machines - Enabled if GL2ES2 and FBO offscreen commit 74c254d42bb2389dc9bf257898053700c8c72568 Author: Sven Gothel Date: Sun Dec 16 07:18:36 2012 +0100 Fix/Complete commit b8a8fc24a3afb0cb06a31504bdea1a98b8f00ef4 - Adding missing GLU code commit b8a8fc24a3afb0cb06a31504bdea1a98b8f00ef4 Author: Sven Gothel Date: Sun Dec 16 02:55:07 2012 +0100 GLArrayData/ImmModeSink: Remove implicit dependency on ShaderState - allow operating w/o it; ShaderState: Remove notion of GL context attachment, use pass-through or object association; GLArrayData/GLUniformData: Add basic GLSL location methods - GLArrayData/GLUniformData: Add basic GLSL location methods - GLArrayData - add: setLocation(..) for attribute location/index retrieval (post link) and binding (pre link) - GLUniformData - add: setLocation(..) for attribute location/index retrieval (post link) - GLArrayData/ImmModeSink: Remove implicit dependency on ShaderState - allow operating w/o it - GLArrayData - add: 'public void associate(Object obj, boolean enable)', allows setting ShaderState usage - ShaderState: Remove notion of GL context attachment, use pass-through or object association - ownsAttribute(..) associates the attribute w/ ShaderState - removed GL context ShaderState attachment Tested: - ImmModeSink w/ GLSL/ES2 w/ and w/o ShaderState - GLArrayData* w/ and w/o ShaderState commit e7064ece049705e013d80985eae698ce0ee3c4e3 Author: Sven Gothel Date: Sat Dec 15 23:25:12 2012 +0100 Cleanup GLContext special entries: getOffscreenContextPixelDataType(), getOffscreenContextReadBuffer(), .. ; Add GLFBODrawable API entries for multi buffering (no impl. yet); GLJPanel 1st simplification using offscreen drawable - Cleanup GLContext special entries: getOffscreenContextPixelDataType(), getOffscreenContextReadBuffer(), .. ; - add: getDefaultReadBuffer() (-> exposed via GLBase as well) - add: isGLOrientationFlippedVertical() - add: getDefaultPixelDataType() - removed impl: getOffscreenContextPixelDataType() - removed impl: getOffscreenContextReadBuffer() - removed impl: offscreenImageNeedsVerticalFlip() - Add GLFBODrawable API entries for multi buffering (no impl. yet); - TODO: Add implementation code in GLFBODrawableImpl - GLJPanel 1st simplification using FBO - Use above new GL/GLContext entries - Fix: getNativeSurface() and getHandle() - TODO: - Remove distinction of 'pbuffer' and 'software', - Use GLDrawableFactory.createOffscreenDrawable(..) - Use GL for FBO swapping commit 36a6cfb5b346f3b0cda7326f61bf22fb60486fd2 Author: Sven Gothel Date: Fri Dec 7 13:17:49 2012 +0100 WWW: Link to Siggraph2012 page and use relative URL to wiki commit 7a6f6b7a5b028e918a843de9fe16c38da75edba9 Author: Sven Gothel Date: Thu Dec 6 13:23:07 2012 +0100 WWW: reorder siggraph commit c9f0a00e25e5701160cac4d204b468512ec1453e Author: Sven Gothel Date: Thu Dec 6 13:21:31 2012 +0100 Add siggraph2012 commit 0c3073629328a92920822c2416be865861ab43f9 Author: Sven Gothel Date: Wed Dec 5 05:43:57 2012 +0100 Add Java3d and nifty-gui commit 433c63b98ebda7b320942ed485a8ee742d9523e7 Author: Sven Gothel Date: Wed Dec 5 03:58:27 2012 +0100 Update JOGL WWW page (Added sections: App, Util, Games, Old; Added Ardor3D, jME3, ticked2ride, jake2 update ..); Cleanup html5. commit 7cb6cf2a9708d3f4e06f2215eb0d06b00fa6cd15 Author: Sven Gothel Date: Tue Dec 4 07:10:59 2012 +0100 SWT GLCanvas: Fix sporadic drop of redraw on X11 _and_ allow using custom GLCapabilities on X11 (feature complete) To allow custom GLCapabilities, we had to use native parenting on X11 w/ a new child window. The desired visualID chosen by the users GLCapabilities is passed to the new child window. The redraw drops must be caused by the original GDK or the new child GDK window. Now we use a plain X11 child window similar to NEWT's X11 window and NewtCanvasSWT, which doesn't expose this bug. (Note: SWTAccessor/GLCanvas still contains the uncommented GDK code path for further inspection, if desired) Also added SWTNewtEventFactory to test event handling on the SWT GLCanvas w/ GearsES2. TestSWTJOGLGLCanvas01GLn tests custom GLCapabilities now. SWTEDTUtil has been moved to private: com.jogamp.newt.swt -> jogamp.newt.swt. commit ceadea1c11cfeecfcafe3dfa76aafd8e915c0076 Author: Sven Gothel Date: Sun Dec 2 04:16:22 2012 +0100 Fix GLDrawableHelper invokeGLImpl(..): Only attempt to release context after successfull claim; Also fix intendations of block. commit 571c21df9310d043b08a4a72064617cbe6eee0fa Author: Sven Gothel Date: Sun Dec 2 04:14:30 2012 +0100 SWT GLCanvas/NewtCanvasSWT: Check isVisible() @ validation; NewtCanvasSWT remove just introduced setVisible(false) and adapt to setEDTUtil() changes. ; Enhance Bug 643 unit test: Also test NEWT EDT and pre-visible GLWindow. - SWT GLCanvas/NewtCanvasSWT: Check isVisible() @ validation - NewtCanvasSWT remove just introduced setVisible(false) and adapt to setEDTUtil() changes - Enhance Bug 643 unit test: Also test NEWT EDT and pre-visible GLWindow. commit aa4b8c9abbf9529fdbb3c4982895c01f2698451f Author: Sven Gothel Date: Sun Dec 2 04:09:41 2012 +0100 NEWT EDTUtil: Simplify running state (default is running @ setEDTUtil()); Simplify DefaultEDTUtil impl. and fix concurrency leak w/ 'shouldStop' commit f0f58e120817b57ed3fb70c238001579a68e4064 Author: Sven Gothel Date: Sun Dec 2 03:59:13 2012 +0100 Fix Bug 643: SWT 'display.asyncExec(Runnable runnable)' runnable not executed on Windows Turns out that the NEWT Windows impl. didn't properly validated the client region @ WM_PAINT and hence 'exhausted' the message pipeline, i.e. never reached an IDLE state. The latter caused SWT to never reach a point where deferred asyncExec(..) Runnables got processed. Besides this SWT effect, this also caused a NEWT window on Windows to always repaint itself (?). commit b6f54d1714597ba2799160569b56139277db9e07 Author: Sven Gothel Date: Sun Dec 2 03:55:08 2012 +0100 NEWT WindowImpl fixes: surfaceLockCount-- if native lock fails; waitForVisible(.., fastFail:=false); waitForSize(..) @ setSize; reparent definePosition(..); - surfaceLockCount-- if native lock fails In case native lock fails, not only remove the windowLock but also decr. surfaceLockCount (proper roll back) - was a BUG! - waitForVisible(.., fastFail:=false) Don't fail fast if visibility wasn't reached. - waitForSize(..) @ setSize Wait for size change - otherwise an SWT child won't reach desired size. - reparent definePosition(..); Position might not get updated by WM events (SWT parent apparently) - Windows WindowDriver: Cleanup code a bit. commit 1f360ff73901b0a48f9ee310d8f2e5c4aad1e101 Author: Sven Gothel Date: Fri Nov 30 15:50:22 2012 +0100 NEWT WindowImpl: Don't issue native resize if invisible, simply use defineSize(..); Don't set persitent undecorated flag if child window at creation; Use local 'screen' directly. - Don't issue native resize if invisible, simply use defineSize(..) Invisible windows may not promote size change natively, hence simply setting the size via defineSize(..) is appropriate. Latter setVisible(true) will take size into account. - Don't set persitent undecorated flag if child window at creation Even if a window is a child at creation, it maybe reparented to top-level where the default behavior is to be expected. Undecorated top-level window shall require explicit setUndecorated(true). - Use local 'screen' directly. No need to make code more complicate .. commit 4d9f7514ccea1669405a511d054b0fca8eae7550 Author: Sven Gothel Date: Fri Nov 30 15:28:52 2012 +0100 Fix NewtCanvasSWT's newtChild usage: Only use set newtChild if it's ready, i.e. SWTEDTUtil set and parented; Recognize pending resize. commit 9ddbfb35882aa4c361d161ab8aca91ed670a97c8 Author: Sven Gothel Date: Fri Nov 30 15:02:07 2012 +0100 Simplify NEWT EDTUtil invoke: To start EDT Runnable maybe null - start EDT even if on EDT thread. DEBUG: Name EDTUtil impl, e.g. Default, AWT and SWT commit 0bb202f2883e1eb82256140f13310046f7b13c62 Author: Sven Gothel Date: Thu Nov 29 18:21:02 2012 +0100 Bug628: Adding unit-test 'TestNewtCanvasSWTBug628ResizeDeadlock' exposing NewtCanvasSWT asyncExec(..) bug w/ native parenting The unit test shows, that while using JOGL's SWT GLCanvas Display's asyncExec(..) works properly, but w/ NewtCanvasSWT on Windows does not. NewtCanvasSWT differs w/: - Using native parenting [Newt GLWindow to SWT Canvas] - Processing native events in own NEWT EDT, w/ own Windows dispatch hook [For the child GLWindow only] commit 811e3791b98fea0dfa3b7d301cb532c54df8dc82 Author: rhatcher Date: Thu Nov 29 09:11:07 2012 -0600 Fix for JOGL bug 629, and added new unit tests. The change to AWTNewtEventFactory appears to fix the original issue for AWTCanvas instances, and the TestNewtEventModifiersAWTCanvas appears to work ok too. However, there are still issues with NewtCanvasAWT and NewtCanvasSWT instances. These might be problems in the test code, but there's also a good chance there are still issues in the NEWT event delivery infrastructure. For the time being I recommend that only TestNewtEventModifiersAWTCanvas be included in routine unit tests. The tests are defined in TestNewtEventModifiers, and the remaining test classes extend it to define how the window and associated GL drawing surface are created. File ModifierMappings.txt is simply informational, and shows how the modifier bits are laid out between AWT and NEWT. This possibly should have been a spreadsheet. commit 03d74338497130f8100272803cae475043d8ceee Author: Sven Gothel Date: Thu Nov 29 00:26:11 2012 +0100 NewtCanvasSWT: Add DisposeListener commit 601d6c46df61853fb61df087327a055550316b1d Author: Sven Gothel Date: Thu Nov 29 00:08:06 2012 +0100 SWT GLCanvas: Fix dispose bug, check for isDisposed() and add DisposeListener; Run GL tasks on current thread w/o restrictions Fix dispose bug, check for isDisposed() and add DisposeListener - Don't issue SWTAccessor.setRealized(..), since it's called implicit via super.dispose() - Check isDisposed() .. - add DisposeListener to act on parent's disposal (Shell, Composition, ..) Run GL tasks on current thread w/o restrictions + * The current thread seems to be valid for all platforms, + * since no SWT lifecycle tasks are being performed w/ this call. + * Only GL task, which are independent from the SWT threading model. commit beb11947fb16dd5549b2e1b1383f95e30178bf0a Author: Sven Gothel Date: Thu Nov 29 00:02:18 2012 +0100 TestSWTJOGLGLCanvas01GLn: Use display.syncExec(..) where possible, add Animator commit 6497cfa578b3ea5222678de930bb335e30794c7b Author: Sven Gothel Date: Thu Nov 29 00:01:20 2012 +0100 SWTAccessor: Add SWT 4.3's X11-GTK version adaption (2.14, 2.24, 3.0) commit c89255427102a3b71cdc82ed4b7284931b00dfa9 Author: Sven Gothel Date: Wed Nov 28 21:47:27 2012 +0100 SWT Solaris x86 files: Use version 4.2, 4.3.0-M3 fails, see README.txt commit 90b59f265a227ab36d307195628f25356b5ce731 Author: Sven Gothel Date: Wed Nov 28 18:03:52 2012 +0100 Fix etc/test_dbg.sh: Missing jogl.all.jar -> jogl-all.jar commit c2425664dd28479483a6c761f52ad709a6e25977 Author: Sven Gothel Date: Wed Nov 28 17:35:09 2012 +0100 Complete commit 541bcc1eecc50656392e1fec1a27b08ab78eceff (SWT version bump 3.7.1 -> 4.3.0-M3): gtk-freebsd-x86_64 is still on 3.7.1 commit c5abdedc7944dd9eff39800a8fd4e4f0dadd8b9a Author: Sven Gothel Date: Wed Nov 28 17:34:00 2012 +0100 etc/profile.jogl: Fix OpenIndiana ARCH i86pc -> x86 (used currently for SWT tests only) commit 2542e21e3c0276f82aba0010220fc9c58fb51202 Author: Sven Gothel Date: Wed Nov 28 17:32:25 2012 +0100 Fix regression of commit 4dd44b985fe0541be3a3bcd9045d201ed3ca2cc5: Setting 'sendReshape' for onscreen drawables as well. commit f25b5c973150252af5c5fbf4ca87b03e2e9aee32 Author: Sven Gothel Date: Tue Nov 27 19:04:20 2012 +0100 Fix script lstjars.sh's pack200 list commit 337ae7842fc9a78196dab9a21eb052b3f4dfc5cd Author: Sven Gothel Date: Tue Nov 27 19:03:57 2012 +0100 X11Util/Xmisc setX11ErrorHandler: Force setting X11 error handler if invoked from Java ensuring to overwrite other TKs handler SWT sets it's error handler, which exits application in case of an X11 error (e.g. n/a GL3 impl.). We need to allow overwriting it, hence allowing multiple calls (NEWT, GLContext). This patch also makes native NativewindowCommon_x11ErrorHandlerEnable(..) function static. commit 17dd761d7c2b224f0505a399bf4ecb18634e9250 Author: Sven Gothel Date: Tue Nov 27 01:55:10 2012 +0100 SWTEDTUtil/AWTEDTUtil: Fix deadlock situations ; Cleanup TestNewtCanvasSWTBug628ResizeDeadlock - Fix deadlock situation in waitUntilStopped/Idle(), skip if on AWT/SWT EDT - Use RunnableTask for sync task invocation, don't block AWT/SWT EDT. - Cleanup TestNewtCanvasSWTBug628ResizeDeadlock (works on OSX as well) commit 8cf694c1424277e6358039a964ecd75c54cf9af9 Author: Sven Gothel Date: Mon Nov 26 18:15:59 2012 +0100 SWTAccessor: OS_gtk_widget_unrealize optional (SWT 4.3) ; decorate PrivilegedAction for static initSingleton block (SWTAccessor, NewtFactory, NativeWindowFactory) commit 541bcc1eecc50656392e1fec1a27b08ab78eceff Author: Sven Gothel Date: Mon Nov 26 17:22:13 2012 +0100 SWT: Bump to version 4.3.0 M3 201210312000 commit ae30626c7d857c21eabaa0d0d819ad13d19d9987 Author: Sven Gothel Date: Sun Nov 25 14:59:09 2012 +0100 Add test-x64 script for running SWT junit test cases (only) - also documents how to run partial junit tests commit b6fa407d4bf19ef9fe387454b5eeca68853532b9 Author: Sven Gothel Date: Sun Nov 25 14:58:05 2012 +0100 SWTEDTUtil/AWTEDTUtil: Fix deadlock situation in waitUntilStopped(), etc - wrap task execution (or enqueing) into status-sync 'edtLock' This fixes the disparity w/ DefaultEDTUtil, i.e. aligns it's implementation/semantics. commit cc5fb8d9f807089c5d119f3b56eed7d018a1dba2 Author: Sven Gothel Date: Sun Nov 25 13:50:40 2012 +0100 FPSAnimator: Add note on deamon-thread and JVM shutdown behavior. commit f24844c5e6c57a43df79224f2d3a89e9720726f7 Author: Sven Gothel Date: Fri Nov 23 09:09:17 2012 +0100 Fix SWTEDTUtil Bug628: Perform NEWT event dispatching on SWT-EDT, due to possible triggered locking action, i.e. display(). Do the same for AWTEDTUtil. This fix actually clarifies the annotated FIXME :) commit a349db5086a7be7dd80fc2ad29a8a4b55f343e01 Author: Sven Gothel Date: Fri Nov 23 08:29:52 2012 +0100 Bug628: Adding unit test reproducing the deadlock realiable withing first rounds of multi-threaded display. If a NEWT Window locking operation is performed from within NEWT's EDT (native event dispatch) and a mutable SWT operation performed via NEWT's display invoke - a deadlock occurs. commit 7e5371ca8eafce28c242fa7fbd8aec045fc81b71 Author: Sven Gothel Date: Wed Nov 21 18:38:46 2012 +0100 OSX CALayer Stencil/.. Fix: In case of FBO CALayer usage, use default caps/pixelformat w/ chosen GLProfile only Using a pixelformat w/ chosen stencil for CALayer does corrupt rendering for an unknown reason, probably due to incompatible pixelformat w/ CALayer composition. This patch simply discards any special chosen caps, while only recognizing the desired GLProfile for the FBO CALayer pixelformat. commit dbe36a8ff7d3f0ebe75d2f02e93e0ece1000ee15 Author: HaZuki Date: Fri Nov 16 17:35:07 2012 +0900 Fix Bug : Quaternion multiplication unexpected behavior commit 1f33b196d339006d132fc6adafa345913bc08f53 Author: Sven Gothel Date: Tue Nov 13 16:57:09 2012 +0100 NewtVersionActivity: Dump information in logcat commit 1f297402b5cf6d0be8d2d852ee6704680984c35b Author: Sven Gothel Date: Mon Nov 12 08:53:37 2012 +0100 Frustum: Clarify method names, fix point/sphere classification, add used references Clarify method names: - update(..) -> updateByPMV(..), updateByPlanes(..) - isOutside(AABBox) -> isAABBoxOutside(AABBox) - .. same for point/sphere, while adding 'Location classifyType(..)' commit d621fcf6f2c6096ea71bf2ebb767c48f8eb3a5e1 Author: Sven Gothel Date: Mon Nov 12 07:30:54 2012 +0100 Frustum: Add doc. about Frustum's Plane's normal orientation commit 92406ae9a2153c1b6a74c29d9939a021d898dcf1 Author: Sven Gothel Date: Mon Nov 12 07:13:45 2012 +0100 Frustum: Cleanup / update; PMVMatrix: Fix mulPMV Frustum: Cleanup / update - Remove ctor w/ PMV, use update(..) instead - avoid API explosion - Add update(Plane[]) to copy existing Frustum planes - Mention world-coordinates in update(PMV) PMVMatrix: Fix mulPMV - P*Mv in column major order is correct for Frustum commit 3859f4577524bd3302631272579183adbc92f5c2 Author: Sven Gothel Date: Mon Nov 12 06:40:22 2012 +0100 Frustum: Clarify isOutside(AABBox) impl, add isOutside for point and sphere commit 5f0aa6b2d1a2af6a0c7c23ac0c00bfde06fafe4c Author: Sven Gothel Date: Mon Nov 12 05:36:20 2012 +0100 Adding Ref.: Frustum-Culling, Max Wagner commit 6f22805273d63d3b6f0449f34c0acb5edec285db Author: Sven Gothel Date: Mon Nov 12 04:28:51 2012 +0100 Validating Frustum w/ help of Eduard White olamedia@gmail.com, referencing the original paper Paper: Fast Extraction of Viewing Frustum Planes from the World-View-Projection Matrix http://graphics.cs.ucf.edu/cap4720/fall2008/plane_extraction.pdf Authors (in alphabetical order): Gil Gribb Klaus Hartmann 06/15/2001 Fix: - Column Major Order PMV (Passing to Frustum and in calculation itself) according to paper coeff. calculation of plane - Plane's signed distance function (only add d, don't multiply) - Normalization: divide by lenght, not multiply commit 26bdab54bdf877ea4d9fd8f42317889279706926 Author: Sven Gothel Date: Sun Nov 11 22:06:40 2012 +0100 Frustum: Print Plane's normals properly in toString() commit 263452439c10540776545c12255bf3b75c7fbd2b Author: Sven Gothel Date: Sun Nov 11 21:01:26 2012 +0100 Frustum: Passing Mv*P (column major order) commit f67d310743cd6dee3d3005b96b61e9adae628899 Author: jthedering Date: Fri Nov 9 17:50:25 2012 +0100 Added a condition to skip updateGraphicsConfigurationARB when non-hardware-accelerated capabilities are requested, because only updateGraphicsConfigurationGDI provides software rendering capabilities. commit 802404e08476387f656115b8542366706d7eeb3f Author: Sven Gothel Date: Sun Nov 11 08:55:28 2012 +0100 Fix Graph SceneUIController: Remove Listener by itself in dispose() commit f96efda203f1ebf79c84b3445efdd824537d6e2e Author: Sven Gothel Date: Sun Nov 11 08:54:56 2012 +0100 GLDrawableHelper disposeAllGLEventListener(): Don't use cached listener size / check size() > 0, since List can be modified by listener itself commit a2bc4bcf26ce392d892c8cba5071d3f3877ed0c7 Author: Sven Gothel Date: Sun Nov 11 08:26:10 2012 +0100 PMVMatrix: Add 'Frustum glGetFrustum()' adding same dirty/request methodology as for Mvi and Mvit Allows user to derive Frustum from updated P + MV Clarify method name for clearing all update request: - disableMviMvitUpdate() -> clearAllUpdateRequests() commit 31d64a8e03e9c031181b32af55dc30ee3baad976 Author: Sven Gothel Date: Sun Nov 11 08:22:28 2012 +0100 Frustum: Simpler usage (ctor, update) no need for explicit compute() method. Don't store passing PMV reference. isInside() -> isOutside() commit 802e80af821efbd20469d1e5b2157a9443dde0d9 Author: Sven Gothel Date: Sun Nov 11 08:18:36 2012 +0100 AABBox: Add public direct setSize(..), skipping redundant reset() / resize(..) commit 241f3bfdbbec655130234601652d88c30269fde4 Author: Sven Gothel Date: Sun Nov 11 05:18:18 2012 +0100 Cleanup Frustum Math Util: Independent / Compile Clean / Relocation ; PMVMatrix: Add getPreMultipliedPMV(..) - Independent / Compile Clean - Remove OpenMALI dependencies - Use basic float[] type and FloatUtil - Use AABBox - FIXME: May need BBox (no axis alignment ?!) - Relocation - Move to com.jogamp.opengl.math.geom (see commit 5fafc1ac360333645b807dcd8dff0c0a655ea439) commit 5fafc1ac360333645b807dcd8dff0c0a655ea439 Author: Sven Gothel Date: Sun Nov 11 05:01:56 2012 +0100 Reorganize math code into: com.jogamp.opengl.math and com.jogamp.opengl.math.geom packages Note: WIP - We may relocate / reorg math package. Public relocations: com.jogamp.opengl.util -> com.jogamp.opengl.math - FixedPoint - FloatUtil com.jogamp.graph.math -> com.jogamp.opengl.math - Quaternion - VectorUtil com.jogamp.graph.geom -> com.jogamp.opengl.math.geom - AABBox VectorUtil: Introducing Vert2fImmutable and Vert3fImmutable interfaces, allowing graph Vertex instances to be used 'graph' agnostic and to document 2d/3d use-cases. commit 0edb45f11cd034c4937e6941b7a3e5d9f7edbd2f Author: Sven Gothel Date: Sun Nov 11 02:49:48 2012 +0100 Merge MathFloat into FloatUtil commit 944562a9600598dfa8a23f96f568fde999e1eca3 Author: Tek Date: Sun Nov 11 02:36:39 2012 +0100 Fix Bug 636: Quaternion multiplication unexpected behavior commit 122016d1235bf80aca7dcbabece054e1a90360ee Author: Eduard White Date: Sun Nov 11 02:32:38 2012 +0100 Adding basic Frustum utility class interfacing w/ PMVMatrix. Still depending on OpenMALI - hence broken. commit 3b57e34459703b2755f9c432e36beff596850b91 Author: Sven Gothel Date: Thu Nov 8 18:10:47 2012 +0100 Bug 634 - Part 1: Fix FBObject regression of commit dbc260bd2e917ee9001461749c99da0c9cbfaf9a - init(..): Query MAX_COLOR_ATTACHMENTS: Remove erroneous samplingSink null check (it's always null) - reset(..): Create & construct samplingSink if required and missing before detaching all (due to bind) - setSamplingSink(..) returns previous samplingSink commit d0f91a8ed17fbb1a7b56511c4e53a29e576f01af Author: Sven Gothel Date: Thu Nov 8 18:07:19 2012 +0100 Fix GLAutoDrawable.dispose(): Dispose drawable even w/o context; JAWTWindow.lockSurface(): Check AWT component's native peer - Fix GLAutoDrawable.dispose(): Dispose drawable even w/o context - It is possible to have the GLContext not being created (not made current), so drawable shall be disposed independent. - Merge Runnable 'postDisposeOnEDTAction' to dispose Runnable for clarity - GLDrawableHelper: Split disposeGL from invokeGLImpl for clarity - JAWTWindow.lockSurface(): Check AWT component's native peer - W/o a native peer (!isDisplayable()), JAWT locking cannot succeed. - On OSX OpenJDK 1.7, attempting to JAWT lock a peer-less component crashes the VM - MacOSXJAWTWindow.lockSurfaceImpl(): Remove redundant null checks commit 9ce042df68b70a0e62b21b93d2a1a64722e1e49e Author: Sven Gothel Date: Tue Nov 6 18:11:45 2012 +0100 FBObject: Rename private fields for better reading: samplesSink* -> samplingSink* commit dbc260bd2e917ee9001461749c99da0c9cbfaf9a Author: Sven Gothel Date: Tue Nov 6 17:12:59 2012 +0100 Bug 634 - Part 1: FBObject, Make MSAA 'samplingSink' mutable and add setSamplingSink(..). Create MSAA samplingSink lazy if null. commit aa789425b0681b8cf5d4d3474e8fc62792882388 Author: Sven Gothel Date: Tue Nov 6 17:06:06 2012 +0100 GLFBODrawableImpl: Following suit w/ commit b83b068c0f426f24a58e2bd9f52de9ebd0c7876d, sync GL command stream before FBO reconfig Even though we currently have no bug experienced on this, it seems to be a good idea for highly concurrently GL driver implementations. commit b83b068c0f426f24a58e2bd9f52de9ebd0c7876d Author: Sven Gothel Date: Tue Nov 6 16:10:51 2012 +0100 Fix GLDrawableHelper.recreateGLDrawable(..): Sync GL command stream before destruction of drawable Lack of finishing the GL command stream lead to a SIGSEGV on Windows w/ Nvidia driver where probably pending GL commands were still being processed concurrently. commit 9e2563da5e40964d691fe9502de6c9178f98bee0 Author: Sven Gothel Date: Mon Nov 5 15:42:21 2012 +0100 TestGLCanvasAWTActionDeadlock0[01]AWT: Disable 'restart' test on current (non AWT) thread - crashes on solaris (which is fine) Modifying AWT components shall always happen on AWT-EDT anyways. commit 8c78f80f205345fe43ec2639e648421ef0134e57 Author: Sven Gothel Date: Mon Nov 5 05:02:38 2012 +0100 GLAutoDrawable: Refine API change of commit c002e04f848116922a1ed7bd96ead54961649bbd As suggested by Julien Gouesse, align 'enqueue(..)' method w/ 'invoke(..)': - public void enqueue(GLRunnable glRunnable); + public boolean invoke(boolean wait, List glRunnables); commit 3a00361952120f8127a3014623de703ac696e036 Author: Sven Gothel Date: Mon Nov 5 03:49:20 2012 +0100 Analyzed OSX Deadlock w/ AWT Applet & CALayer: Andres Colubri's Test Case, Commit 77db6a5c22cb4a53cf911b4caf57127770c70968 [1] - The AWT/Applet test case on OSX utilized offscreen CALayer, which is correct. [2] - the GLEventListener.display(..) method calls Frame.setTitle(".."); which is correct, but freezes when called right after GLEventListener.init(..) BUG on OSX/CALayer: If frame.setTitle() is issued right after initialization the call hangs in at apple.awt.CWindow._setTitle(Native Method) at apple.awt.CWindow.setTitle(CWindow.java:765) [1.6.0_37, build 1.6.0_37-b06-434-11M3909] Happens w/ Oracle's JRE7u9 as well! Workaround: - Set 'justInitialized' flag in GLEventListener.init(..) - Clear 'justInitialized' flag in GLEventListener.display(..) at the end - Skip Frame.setTitle(..) in GLEventListener.display(..) if 'true == justInitialized' Somebody may send a bugreport to Oracle / OpenJDK. commit 0b3f9ee017f7216ec9ff37c16bbb44848aa5cfa5 Author: Sven Gothel Date: Sun Nov 4 19:51:31 2012 +0100 TestGLCanvasAWTActionDeadlock01AWT: Reproducing OSX deadlock variation, using Applet as component which provokes offscreen FBO layer. commit 5e46e5c24a3c35d17fa51b7790889dc1ca0756f8 Author: Sven Gothel Date: Sun Nov 4 19:50:13 2012 +0100 TestGLCanvasAWTActionDeadlock00AWT: Remove redundant argument commit dc3aa7bdd7fd2afb2301e8813d8a5e7a1f87c4f2 Author: Sven Gothel Date: Sun Nov 4 19:25:56 2012 +0100 TestGLCanvasAWTActionDeadlock01AWT -> TestGLCanvasAWTActionDeadlock02AWT; To add another intermediate unit test for analysis commit 77db6a5c22cb4a53cf911b4caf57127770c70968 Author: Sven Gothel Date: Sun Nov 4 19:05:32 2012 +0100 Adding Andres Colubri's Test Case (junit'fyed), which provokes a Deadlock on OSX - Adding a similar one w/o deadlock and less framework bits. Andres Colubri reported a test case in the forum: Which is now included as TestGLCanvasAWTActionDeadlock01AWT. A similar w/ less framework bits and w/o dealock is also included as TestGLCanvasAWTActionDeadlock00AWT. A followup commit will incl. a fix after further analysis. A commit at this point where TestGLCanvasAWTActionDeadlock01AWT still freezes on OSX is done to be able to reproduce the bug and see the fix as a patch. commit b51cab4a8bcf8d9256e39657369510e39d22f162 Author: Sven Gothel Date: Sun Nov 4 17:02:44 2012 +0100 GLDrawableUtil.swapGLContextAndAllGLEventListener(..): Add glFinish() before and after ctx/drawable swap - sync'ing GL state Otherwise a driver crash may occur on Windows/NVidia. commit 9cf42434eb58160e25c79613efca51f2fd4d6086 Author: Sven Gothel Date: Sun Nov 4 07:11:41 2012 +0100 FPSAnimator: Wait '2 x period' or 20ms, whichever is greater in case of pause/stop - taking execution frequency into account commit c002e04f848116922a1ed7bd96ead54961649bbd Author: Sven Gothel Date: Sun Nov 4 07:09:39 2012 +0100 GLAutoDrawable: Fix GLEventListener lifecycle and expose more user control (API Change) ; Added GLDrawableUtil A GLEventListener resides in two states, initialized and uninitialized. When added to a GLAutoDrawable, it is uninitialized. A first 'display()' will issue GLEventListener's 'init(..)' which renders it initialized. This is usually accompanied by 'reshape(..)' propagating the drawable's dimension. Destruction of the GLAutoDrawable will issue GLEventListener's 'dispose(..)' which renders it uninitialized. It turns our these means of GLEventListener controls are not sufficient in case the user requires to remove and add them during the lifecycle and rendering of their GLAutoDrawable host. GLAutoDrawable 'removeGLEventListener(..)' merely removes the GLEventListener from the list, but does not complete it's lifecycle, i.e. issues 'dispose(..)' if initialized to realease GL related resources. Hence the following essential API changes are made to complete the lifecycle: + public GLEventListener disposeGLEventListener(GLEventListener listener, boolean remove); disposing a single GLEventListener, allowing it's removal from the list being optional This is demonstrated via GLDrawableUtil.swapGLContextAndAllGLEventListener(GLAutoDrawable a, GLAutoDrawable b), see below. ++++++++ Further more the following API changes were made to expose complete control of GLEventListener to the user: - public void removeGLEventListener(GLEventListener listener); + public GLEventListener removeGLEventListener(GLEventListener listener); The return value allows simple pipelining, and also delivers information whether the passed listener was actually removed. - public GLEventListener removeGLEventListener(int index) throws IndexOutOfBoundsException; + public int getGLEventListenerCount(); + public GLEventListener getGLEventListener(int index) throws IndexOutOfBoundsException; Dropping the redundant removal by index, while adding count and get methods. + public boolean getGLEventListenerInitState(GLEventListener listener); + public void setGLEventListenerInitState(GLEventListener listener, boolean initialized); Allows retrieving and setting of listener states. All in all these API changes allows a user to experience all freedoms in dealing w/ GLEventListeners hosted by GLAutoDrawable impl. and shall be future proof. Note that we have avoided the Iterator pattern due to it's overhead of temporal objects creation. The simple indexed access allows us to implement each method as an atomic operation. +++++++++++ Further more a simple enqueue(..) method has been added, allowing to just enqueue a GLRunnable w/o provoking it's execution - as invoke(..) does. This method pleases a use case where GLRunnables are batched and shall be executed later on.. public boolean invoke(boolean wait, GLRunnable glRunnable); + public void enqueue(GLRunnable glRunnable); +++++++++++ Added GLDrawableUtil, exposes utility function to rearrange GLEventListener, modifiy GLAutoDrawable, etc. GLDrawableUtil.swapGLContextAndAllGLEventListener(GLAutoDrawable a, GLAutoDrawable b) is tested and demonstrated w/ TestGLContextDrawableSwitchNEWT. Manually tested on X11, OSX and Windows. commit 808c8da0729b845d010d3f5e0babf1fc6129c3e9 Author: Sven Gothel Date: Sun Nov 4 06:42:43 2012 +0100 MacOSXCGLContext[NSOpenGLLayer/NSView]: Propagate drawable change Propagate drawable change to MacOSXCGLContext where either context/NSView or context/NSOpenGLLayer association needs to get updated. Fixes drawable/context switch.