commit a0b23035bf9de987f5ad1b00fe3630c102f4e513 Author: Sven Gothel Date: Wed Dec 11 21:09:59 2013 +0100 Bug 918: Fix EOS Regression: Only use pts>duration for EOS if duration > 0 (camera or other sources may not have duration) Regression of commit 8a8ed735f6631b2da7bf605c5c3dda4e0fc13905 commit d42b236ef139dcc8d8713535893c7870b55d420c Author: Sven Gothel Date: Wed Dec 11 20:50:43 2013 +0100 ALAudioSink: Fix stop and flush of OpenAL source - stopImpl() shall always issue alSourceStop(..) if state is not STOPPED - Remove 'flush' hint for dequeueBuffer(..), we perform proper flush in respective method, see below - flush() needs to issue: - stopImpl() - which should already dequeue all buffers - Explicitly dequeue all buffers: via 'alSourcei(alSource[0], AL.AL_BUFFER, 0)' - Then dequeue manually processed buffers: dequeueBuffer( false /* wait */ ); - And dequeue _all_ buffers: dequeueForceAll(); commit 8a8ed735f6631b2da7bf605c5c3dda4e0fc13905 Author: Sven Gothel Date: Wed Dec 11 20:46:04 2013 +0100 Bug 918 (2/2): Determine StreamWorker usage after stream-init ; Fix seek(..) ; Fallback for EOS Detection ; MovieSimple uses full GLEventListener for 'Audio Only' as well to test seek Determine StreamWorker usage after init - To support audio only files, we need to determine to use StreamWorker after completion of stream-init. Fix seek(..) - FFMPeg: pos0 needs to use aPTS for audio-only - Clip target time [0..duration[ Fallback for EOS Detection In case the backend does not report proper EOS: - Utilize 'nullFramesCount >= MAX' -> EOS, where MAX is number of frames for 3s play duraction and where 'nullFramesCount' is increased if no valid packet is available and no decoded-video or -audio in the queue. - Utilize pts > duration -> EOS MovieSimple uses full GLEventListener for 'Audio Only' as well to test seek - Matroska seek for audio-only leads to EOS .. http://video.webmfiles.org/big-buck-bunny_trailer.webm - MP4 audio-only seek works http://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4 MovieSimple/MovieCube: - Use audio-pts in audio-only to calc target time Tested: - A, V and A+V - Pause, Stop and Seek - GNU/Linux commit a1be0f69bacb315e40a017b8997ef1c610da576e Author: Sven Gothel Date: Wed Dec 11 07:41:31 2013 +0100 Bug 918: GLMediaPlayer: Fix Deadlock if EOS happens after pause/resume (seek) - Tested w/ seeking 'Audio Only' and Matroska Test stream was default of MovieSimple: http://video.webmfiles.org/big-buck-bunny_trailer.webm while disabling video (-vid -2) commit c6ab1bc932d9a0b3897b24d289e4d561bf8bb65c Author: Sven Gothel Date: Wed Dec 11 06:21:42 2013 +0100 Bug 918 (1/2): Use StreamWorker in 'Audio Only' mode, since no 'getNextTexture(..)' is issued here! Thanks to Xerxes to analyze this issue thoroughly. TODO: Implement EOS for 'Audio Only' and test seek, pause, etc .. - Apply manual tests in MovieSimple commit 45525950b0ad41b10790515c8b6142d746cd24f5 Author: Sven Gothel Date: Wed Dec 11 05:25:31 2013 +0100 Bug 922 (2/2): NEWT Window.reparentWindow(..): Use REPARENT_HINT_BECOMES_VISIBLE to ensure GL State Preservation ; Add unit test ! commit a00406f289ebaaae8d91e9ccc980829f202421a8 Author: Sven Gothel Date: Wed Dec 11 05:23:31 2013 +0100 Bug 922 (1/2): NEWT Window.reparentWindow(..): Provide REPARENT_HINT_BECOMES_VISIBLE hint via new method variant using hints; Deprecate other reparentWindow(..) variants w/o hints. NEWT Window.reparentWindow(..): Provide REPARENT_HINT_BECOMES_VISIBLE hint via new method variant using hints: - Add REPARENT_HINT_FORCE_RECREATION, covering 'old' forceDestroyCreate boolean argument - Add REPARENT_HINT_BECOMES_VISIBLE, Claim window becomes visible after reparenting, which is important for e.g. preserving the GL-states in case window is invisible while reparenting. Deprecate other reparentWindow(..) variants w/o hints. Use only new variant using hints w/o semantical change. commit 4fa4a60a8e536ab7270df1d74503dba9a945bb20 Author: Sven Gothel Date: Tue Dec 10 22:53:11 2013 +0100 TestShutdownCompleteNEWT/AWT: Align both tests and account for GLInfo. commit 085d7bf429f5640eb540dff4e66f25b69e2c7671 Author: Sven Gothel Date: Tue Dec 10 22:05:17 2013 +0100 TestShutdownCompleteNEWT: Enhance profiling via '-wait -initOnly' ; Use Platform.currentTimeMicros() for accuracy ReflectionUtil usage: TestShutdownCompleteNEWT -wait -initOnly Hotspots: - MakeCurrent 5.3% - Called 52 times - ClassLoader.findClass(..) 3.1% - Called 486 times . - ReflectionUtil: 13 times ~ 0.3% commit f8c2a90129736844a12b76d658cb339a7c36cd9a Author: Sven Gothel Date: Tue Dec 10 21:27:14 2013 +0100 Bug 904: 'User Vertical Flip' for GLJPanel w/o vertical flip must be considered in AWTTilePainter: 'Origin of GL image is still on Bottom' commit 990b25adf6e0b6ab5c79d8ca43bc327fb93a755e Author: Sven Gothel Date: Tue Dec 10 21:24:17 2013 +0100 Bug 904: 'User Vertical Flip' for GLJPanel shall be performed via PROJECTION matrix scaling instead of MODELVIEW rotation ... 'User Vertical Flip' for GLJPanel shall be performed via PROJECTION matrix scaling instead of MODELVIEW rotation to simplify workflow, and to remove artifacts w/ tiled printing. commit ab9076c83cc3b2e7800eaf0a19febe786458146d Author: Sven Gothel Date: Tue Dec 10 21:20:13 2013 +0100 Bug 747: VectorUtil: Make scale(..) creating new float[] deprecated, adding 'in place' variant w/ passing result float[] ; TODO: Replace all variations with 'in place' version to be more memory efficient. Make scale(..) creating new float[] deprecated, adding 'in place' variant w/ passing result float[] TODO: Replace all variations with 'in place' version to be more memory efficient. See Bug747: Validate memory footprint and usage / General performance commit a0a1331862710ec77feecdca546bb2e956eb5e5c Author: Harvey Harrison Date: Mon Dec 9 08:10:31 2013 -0800 jogl: update the entry for JaamSim to a better image, update link to homepage Signed-off-by: Harvey Harrison commit e2b74932a334b4a0bb9fedc12b0bc51095d35d6a Author: Sven Gothel Date: Wed Dec 4 15:59:59 2013 +0100 TestNewtKeyEventAutoRepeatAWT: Fix regression of commit 8512777873461ee33d8ed913ee26bafc00a08a02 commit 8512777873461ee33d8ed913ee26bafc00a08a02 Author: Sven Gothel Date: Wed Dec 4 07:51:30 2013 +0100 Bug 919 - TestNewtKeyCodesAWT w/ NewtCanvasAWT Fails on Windows Due to Clogged Key-Release Event by AWT Robot Impact: Only unit test code - TestNewtKeyCodesAWT: Fix Bug 919 - Move mouse bacl/forth while waiting for events .. - Use common wait for key timeout/polling using constants in NEWTKeyUtil - InputEventCountAdapter: 'getQueued()' -> 'copyQueue()' - ensuring queue is copied while instance is locked. commit 0237bde0f3c13d393c3942b41f79656a80fd578d Author: Sven Gothel Date: Tue Dec 3 21:54:57 2013 +0100 Bug 914: Newt OSX: Reset NSApp's presentationOptions @ windowClose0() / Assume having focus in fullscreen-mode - Reset NSApp's presentationOptions @ windowClose0() Commit 69c334448cfe8af553fd97689137ecf8f996b378 started using the [NSApp setPresentationOptions: opts] but missed to reset to defaults @ windowClose0(); - Assume having focus in fullscreen-mode NewtMacWindow::windowDidBecomeKey()' is not always called in fullscreen-mode! Note: OSX Fullscreen from a browser still shows the browser title-bar until mouse-click. Don't know how to avoid this. Minor issue.. commit 354b0b370bbfd14743267a9466f5e91e4d218a42 Author: Sven Gothel Date: Tue Dec 3 04:08:36 2013 +0100 Bug 916 - NEWT Fullscreen Mode on Windows ALT-TAB doesn't allow Application Switching Remedy for 'some' display drivers, i.e. Intel HD: Explicitly push fullscreen window to BOTTOM when inactive (ALT-TAB) commit 9dd1d908921a4f7336f059dfc4d54aaf910da32b Author: Sven Gothel Date: Mon Dec 2 17:29:19 2013 +0100 NEWT Windows: Rearrange wndProc switch-case: All key/mouse events shall be at last commit 69c334448cfe8af553fd97689137ecf8f996b378 Author: Sven Gothel Date: Mon Dec 2 05:39:01 2013 +0100 Bug 914: Newt OSX: Don't use exclusive fullscreen mode (captured display) in favor of proper WM incl. ALT-TAB app-switching commit 4cb35d98a1b25fb8347584b0ab6534c7cfc5946c Author: Sven Gothel Date: Sun Dec 1 23:22:17 2013 +0100 Bug 914 - Don't allow 'alwaysontop' in fullscreen mode, always allow switching to other applications via ALT-TAB As described @ , we shall not steal the desktop in fullscreen mode via 'alwaysontop'. Latest tests on X11/GNU/Linux and Windows7 - before this patch: With default settings, i.e. alwaysontop (atop) disabled, it works as expected here, i.e.: - ALT-TAB triggers WM dialog, switching between apps. - ALT-TAB can actually switch to other apps. However, with enabled atop: - ALT-TAB triggers WM dialog, switching between apps. - ALT-TAB does _not_ switch to other apps. (*) I consider this a serious issue, since we shall not steal the desktop in fullscreen mode. This patch disables atop in fullscreen mode, i.e. (*) will switch to other apps again! commit 11a4a3a7b120c6f7c34a717828da49e3a13f4a3b Author: Sven Gothel Date: Sun Dec 1 20:05:01 2013 +0100 GLJPanel.initializeBackend(offthread=true): Enable on Windows, thanks to Bug 907 impl. DummyDispatchThread (DDT) Bug 907 implemented DDT used to create and destroy offscreen surface's dummy drawable on Windows. This enables offscreen initialization on Windows running from a short lived arbitrary thread. commit efc158abbb2c282029aaa746e032ec678e374d7b Author: Randolf Schultz Date: Fri Nov 29 03:18:25 2013 +0100 Bug 907 - Add native Windows test sending WM_GETTEXT to all windows and dumping the result. If working, Bug907 is fixed and hence DDT is working. commit 586446311ea1ba87f98236d5347955bf99b465d6 Author: Sven Gothel Date: Fri Nov 29 02:24:01 2013 +0100 Bug 907 - Refine DummyDispatchThread (DDT) Handling: Proper OO integration in RegisteredClass; Safe DDT Post/WaitForReady handling and error cases ; ... Proper OO integration of DDT in RegisteredClass - DDT is optional to RegisteredClass[Factory], i.e. NEWT without DDT and DummyWindow with DDT. - Using native type DummyThreadContext per DDT passed as DDT handle to java referenced in RegisteredClass - Passing DDT handle to related native methods, if not null use DDT - otherwise work on current thread. The latter impacts CreateDummyWindow0 and DestroyWindow0. Safe DDT Post/WaitForReady handling and error cases ; ... - Wait until command it complete using a 3s timeout - Terminate thread if errors occur and throw an exception +++ Discussion: DDT Native Implementation Due to original code, the DDT is implemented in native code. Usually we should favor running the DDT from a java thread. However, since it's main purpose is _not_ to interact w/ java and the native implementation has less footprint (performance and memory) we shall be OK w/ it for now - as long the implementation IS SAFE. commit cb0afe743d21a3480e2d41744a904ac7d404612d Author: Sven Gothel Date: Fri Nov 29 02:07:30 2013 +0100 GLDrawableFactory.shutdown0() Add DEBUG line at the end commit 5906d6cd747092f1e73b32f3337563fa74cec2d2 Author: Sven Gothel Date: Thu Nov 28 22:43:25 2013 +0100 GLDrawableFactory: destroy() -> shutdownImpl() - Add DEBUG output in implementation commit f52c89e36cccd5eb141882a4b3378efe54aa9576 Author: Sven Gothel Date: Thu Nov 28 22:04:46 2013 +0100 Bug 907 - Fix regression of 'cleanup' Commit 52c95c19dbd69a7fc6b307d2b2db357ceb43ddf5 commit 52c95c19dbd69a7fc6b307d2b2db357ceb43ddf5 Author: Sven Gothel Date: Thu Nov 28 16:34:15 2013 +0100 Bug 907 - Cleanup Commit e9c711a86aa05f4f24c69972532833f5a98911a3 Cleanup Commit e9c711a86aa05f4f24c69972532833f5a98911a3: - Fix while loop in SendCloseMessage (native) - static 'threadid' must be volatile - Whitespace - Redundancy - CreateDummyWindow - Scope (java, move JNI funcs back to private) - Remove [invalid] pointer usage (native) - ThreadParam's threadReady and hWndPtr shall not be pointers - invalid - No need to use a threadReady pointer. - Validate threadid (native) TODO: - Make 'native dispatch thread' optional - Store 'native dispatch thread' in window class commit e9c711a86aa05f4f24c69972532833f5a98911a3 Author: Randolf Schultz Date: Thu Nov 28 14:55:03 2013 +0100 Bug 907 - Initial patch allowing Jogl to respond to other applications that try to retrieve window names commit eb9225c928b9a1a5660c865921fcd91f85cd1cd0 Author: Sven Gothel Date: Thu Nov 28 13:43:32 2013 +0100 Fix Bug 902: FFMPEGMediaPlayer uses IOUtil.decodeURIIfFilePath(uri) to decode proper file-scheme if applicable - otherwise encoded ASCII URI. commit 65247a8188c7470ee7f599f2e84cae1bc84fff9c Author: Sven Gothel Date: Tue Nov 26 20:38:13 2013 +0100 Refine DemoBug910ExtendedAWTAppletLifecycleCheck (commit 9310b11b2b6e1e89fa5ed9b8de26e56ff6a6b262): Test start/stop balance. commit 9310b11b2b6e1e89fa5ed9b8de26e56ff6a6b262 Author: Sven Gothel Date: Tue Nov 26 20:08:42 2013 +0100 Bug 910: Add Standalone Extended Applet Lifecycle Validation Test Test is online @ http://jogamp.org/deployment/test/bug910/ Test validates the state of the added component: TC1 - addNotify() and removeNotify() has been called from AWT-EDT. TC2 - removeNotify() is not called before Applet.destroy() Test also validates the Applet state: TA1 - isActive() TA2 - init count TA3 - start count TA4 - stop count TA5 - destroy count commit 1617b3edfa006432dbb7332c283e219e6583f4ec Author: Sven Gothel Date: Mon Nov 25 22:08:50 2013 +0100 Workaround Bug 910 (IcedTea-Web): NewtCanvasAWT shall postpone JAWTWindow destruction via explicit set flag. IcedTea-Web_1.5pre+rbc73a1362e9c still issues NewtCanvasAWT.removeNotify() before before Applet.destroy(), i.e. removes NewtCanvasAWT from the Container ahead of time (Applet protocol destroy()). However, it fixes the non AWT-EDT issue, i.e. calls NewtCanvasAWT.removeNotify() from the actual AWT-EDT - good. Since the root cause still exist, we cannot use heuristics as described in Bug 910 comment 9, but need to set a flag in NewtCanvasAWT to skip JAWT destruction and remove it latter within Applet.destroy(). NewtCanvasAWT.removeNotify.0 - isApplet true @ [AWT-EventQueue-0, isAWT-EDT true] commit d5c25aa5584e98416208afef57610c85ac6c254c Author: Sven Gothel Date: Mon Nov 25 04:25:04 2013 +0100 Bug 672 (NewtCanvasSWT): Reuse SWTAccessor.isOS_TYPE ; Impl NW.getLocationOnScreen(..) for X11 and Windows ; Allow unit test to run on all platforms. - Reuse SWTAccessor.isOS_TYPE (public now) - Impl NW.getLocationOnScreen(..) for X11 and Windows reusing existing native code - Allow unit test to run on all platforms. Note: NewtCanvasSWT unit tests require a 'wait for realized' while SWT dispatching. Otherwise the 'sash unit test' will fail since realiziation happens later, at least on X11. Hence extended AWTRobotUtil.waitForRealized(..) to use a 'waitAction' which is used here w/ special SWT dispatch Runnable. AWTRobotUtil.waitForRealized(..) operates on time-delta instead of iteration-counter, allowing above 'waitAction' Runnable. AWTRobotUtil.waitForRealized(..) removed 2nd 'glad.isRealized()' loop .. commit 09b5d1ed25f9b5de13d2b0980c95121d0d5d7c0e Author: Sven Gothel Date: Mon Nov 25 01:51:26 2013 +0100 Bug 672: Move Unit Tests to appropriate SWT package and prepent Test so they get picked up by our unit test run commit 5db2c65cd030311b5cfcb8174ada6e870db10258 Author: Petros Koutsolampros Date: Sun Nov 24 22:46:58 2013 +0000 Bug 672 (NewtCanvasSWT ignore windowing offset on OSX'). The NewtCanvasSWT is now brought into place by the parent SWT Composite and the super SWT Canvas it extends. Also added two test cases. One with a simple SashForm and the NewtCanvasSWT in the second cell, and another with the NewtCanvasSWT in a Composite, that Composite now in the second cell of the SashForm. The second test is necessary because the NewtCanvasSWT does not receive SWT.Resize events in this configuration, but only SWT.Paint ones (a behaviour inherited from the super SWT Canvas) commit 0c3709ba4ba2dd4ba7bb2e7f0783fba346e090e1 Author: Sven Gothel Date: Sat Nov 23 17:01:09 2013 +0100 Workaround Bug 910 (IcedTea-Web): NewtCanvasAWT shall postpone JAWTWindow destruction if removeNotify() is called from non AWT-EDT commit fa1d211c9658ce209f411e559333da0e2fccd402 Author: Sven Gothel Date: Sat Nov 23 16:59:27 2013 +0100 JOGLNewtAppletBase's add/remove 'reparentHome WindowListener' at start()/stop() commit 832a69834200f34a44d72639bfd47e73c72d2b42 Author: Sven Gothel Date: Sat Nov 23 13:25:21 2013 +0100 JOGLNewtApplet1Run: Perform AWT Operations on AWT-EDT ; Remove redundant explicit call to reparentWindow(null) @ destroy commit 42f56dea3dc31de8049186825e18dc4b4767827e Author: Sven Gothel Date: Sat Nov 23 13:22:13 2013 +0100 JOGLNewtAppletBase's windowDestroyNotify(): Double check 'awtParent' before reparenting 'back to parent' commit 87fa56ba6f88b3f87199c70324b919dc4ae4e6cf Author: Sven Gothel Date: Sat Nov 23 04:03:19 2013 +0100 AWTWindowClosingProtocol: Hold Window reference impl. is listening to to properly removeClosingListener() (and replace boolean state) commit 94f3c1b5d3af65cf9d985833b2c8e40ec1af4592 Author: Sven Gothel Date: Thu Nov 21 01:42:54 2013 +0100 Bug 909 - Reccreate GLJPanel's BufferedImage is no more sourced by singleton AWTGLPixelBuffer GLJPanel must validate whether it's local BufferedImage's DataBuffer is sourced by the current singleton AWTGLPixelBuffer. Case: GLJPanel-B has created a new singleton AWTGLPixelBuffer w/ increased size. Previous created GLJPanel-A's local BufferedImage's DataBuffer is no more sourced by the singleton AWTGLPixelBuffer and hence must be re-created. commit 291c5ac4f0f55807172d1036e7c746db9af7ceec Author: Sven Gothel Date: Mon Nov 18 22:52:21 2013 +0100 WWW: Add J4K and Unlicense in Tools/Libraries .. commit b5b5b0f9f5a12e131b4718af8a4cea899f74e1dc Author: Sven Gothel Date: Mon Nov 18 22:15:53 2013 +0100 NewtCanvasAWT: Remove useless block in else branch commit 177d0da1a9a8e031f15efa9e89465f8ed97f25e5 Author: Harvey Harrison Date: Mon Nov 18 11:28:40 2013 -0800 jogl: push other call to clearGlobalFocus to the AWT EDT Follow-on to commit: d544c839f6df10f20977c786a446833f3aa7ef13 (jogl: do the clearGlobalFocusOwner() call on the AWT EDT in NewtCanvasAWT) Likely this won't hurt anything. Signed-off-by: Harvey Harrison commit d544c839f6df10f20977c786a446833f3aa7ef13 Author: Harvey Harrison Date: Mon Nov 18 10:54:35 2013 -0800 jogl: do the clearGlobalFocusOwner() call on the AWT EDT in NewtCanvasAWT Otherwise we can deadlock in the native focusrequest calls from the AWT thread, see bug 879 for the details. Signed-off-by: Harvey Harrison commit 0a9d16f057727652220a5983b65f22f427df6a22 Author: Harvey Harrison Date: Mon Nov 18 10:55:30 2013 -0800 jogl: simplify conditional that repeats test for isOnScreen if (isOnscreen) else if (!isOnScreen) change to if (isOnscreen) else Signed-off-by: Harvey Harrison commit 417675219de9fb5fceca5771812366ae8768b658 Author: Harvey Harrison Date: Mon Nov 18 10:54:01 2013 -0800 jogl: add missing @Override annotation in NewtCanvasAWT Signed-off-by: Harvey Harrison commit d8f7418f170aba4703df2b11d5ae11598f71a796 Author: Sven Gothel Date: Mon Nov 18 16:12:52 2013 +0100 Fix Bug 893 - NewtCanvasAWT Lifecycle Race Condition (NPE on shutdown periodically) As suggested: Employ synchronization on lifecycle actions _and_ perform destroyImpl(..) always on AWT-EDT to avoid a deadlock. commit 3875b4d8e4dcd1b3a0a93283346bea51ecd0a2eb Author: Sven Gothel Date: Mon Nov 18 15:34:42 2013 +0100 Bug 890 - GLContextImpl's Version Validation: Only validate Integer based Version if requested context or string-version is >= 3.0 .. otherwise, spec doesn't require integer based version to work! commit 4b134a3bd83e80e6a48bb0dfd893079ca457866e Author: Sven Gothel Date: Mon Nov 18 15:32:17 2013 +0100 EGLGraphicsConfiguration: Add deauled DEBUG output for failed EGL-Config Queries commit 3614f908d0f6ae1174a85dbd44a2bad4df2ea8a6 Author: Sven Gothel Date: Mon Nov 18 13:43:42 2013 +0100 NEWT WindowImpl: Move consumePointerEvent(..) below doPointerEvent(..) to easy editing/review commit a90185491d53bb79c98453b18c3e49768e51cec9 Author: Sven Gothel Date: Mon Nov 18 13:41:35 2013 +0100 NEWT Event Tests: Move TestParentingFocus* to event test package commit ead9d65722ac8c647ac1dde654fd4e8250e4d572 Author: Sven Gothel Date: Mon Nov 18 13:36:54 2013 +0100 NewtCanvasAWT: Add method of 'isAWTEventPassThrough()', used in unit tests to fix event validation for offscreen mode (OSX/CALayer) commit 97c8e627068af729d9ea0f7992b2bc5981655296 Author: Sven Gothel Date: Mon Nov 18 13:35:59 2013 +0100 NEWT AWTAdapter*: Don't act if not setup (due to lazy setup mode), refines commit 5c6c11abf643013976ecbc0df463a923a1f52696 commit b335cf086f8ee85985962b6f6676b99ab8141a77 Author: Sven Gothel Date: Mon Nov 18 13:03:58 2013 +0100 NewtCanvasAWT: Use final AWT[Key|Mouse]Adapter and set downstream lazily; Consume AWT KeyEvents in downstream mode; Test respects 'consumed' key events. commit 5c6c11abf643013976ecbc0df463a923a1f52696 Author: Sven Gothel Date: Mon Nov 18 13:01:12 2013 +0100 NEWT AWTAdapter: Add notion of consuming the AWT InputEvent (will be used for key events); Allow AWTAdapter to be lazily setup w/ downstream object. commit 23697c7921039e9655a5760e21d7029598b679d7 Author: Sven Gothel Date: Mon Nov 18 01:11:15 2013 +0100 Fix Bug 879 Regression (2/2) - NewtCanvasAWT.FocusAction must take focus when in offscreen-mode (OSX/CALayer) NewtCanvasAWT.FocusAction must take focus when in offscreen-mode (OSX/CALayer) since the NEWT window _is_ offscreen (no input events) and AWT events are translated to NEWT. Regression of commit 0be87f241c0f0b2f5881d9a602ce12378b8e453d commit d04ca826bc3ca95eb32921e59c1845a1626f88e6 Author: Sven Gothel Date: Sun Nov 17 17:29:37 2013 +0100 Use 'gluegen-clang.properties' for generic clang and 'gluegen-xcode_clang.properties' for OSX xcode-clang ; Add GNU/Linux LLVM/clang build scripts commit 380528f59c4a37429f4fa5f8ac7aa3076d0eaa11 Author: Sven Gothel Date: Sun Nov 17 17:28:10 2013 +0100 Nativewindow/NEWT: Fix C Return Statement commit c153a453299ef12bdb635dc11574a21bba74f04c Author: Sven Gothel Date: Sun Nov 17 05:31:22 2013 +0100 Fix GLIBC > 2.4 dependency regression of commit 613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d Commit 613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d introduced 'memcpy' usage in Xmisc.c which could create a GLIBC > 2.4 dependency. Include GlueGen's glibc-compat-symbols.h to remove such dependency. commit 0be87f241c0f0b2f5881d9a602ce12378b8e453d Author: Sven Gothel Date: Sun Nov 17 04:55:33 2013 +0100 Fix Bug 879 - Threads deadlock in native keyboardfocus calls made form multiple threads; Fix Bug 892: Reduce Focus Hopping Since we manage focus key traversal ourselves w/o requiring the AWT component to have the focus[1], we simply can drop requesting the focus for 'focus hopping' NEWT -> AWT -> NEWT[2]. Further more, 'MenuSelectionManager.defaultManager().clearSelectedPath()' must be performed on AWT-EDT w/o blocking. Otherwise it may perform blocking tasks on AWT-EDT. [1] Commit cb7118fc875b6722803e4b11d5681671962a8d3a introduced function to query the next or previous 'to be focused' component: AWTMisc.getNextFocus(..) .. etc. [2] Focus hopping is also addressed in Bug 892 commit 88f6e0012b36ca69dedaadb4e403e2a424b20cbf Author: Sven Gothel Date: Sun Nov 17 01:54:32 2013 +0100 Bug 903 - NEWT: Support 'Continue Drag on Exit'; Consistent Mouse ENTER/EXIT - Support 'Continue Drag on Exit' - Track dragging operation, allow exterior dragging - Hence track EXIT (see below) - Windows: - Capture mouse for exterior dragging - Only 'NewtWindows_trackPointerLeave' if 'entering' - Simplify touch: No 'inside' check - Not required. - Consistent Mouse ENTER/EXIT - Track ENTER/EXIT and synthesize if required, drop duplicate - OSX benefits, since it never produced ENTER/EXIT events - AWT (or other TK) translated events beahve equal now. - Required for EXIT event after ending exterior dragging and final RELEASE Tests: Passed unit tests 'junit.run.newt.event' on - GNU/Linux - Windows7 - OSX 10.7 Tested exterior tracking manually w/ NEWT TestGearsES2NEWT and TestGearsES2NewtCanvasAWT: - GNU/Linux - Windows7 (mouse) - Windows8.1 (touch) - OSX 10.7 commit ebed9f0322e2a2279a525e04ee3875c9034a7f45 Author: Sven Gothel Date: Sat Nov 16 05:00:27 2013 +0100 Bug 906 - JAWTWindow Component- and HierarchyListener must be detached at JAWTWindow.destroy() - GLCanvas Recreation Case In case a JAWTWindow owner recreates itself, destroying JAWTWindow must detach the Component- and HierarchyListener from the AWT component! Test TestBug816GLCanvasFrameHoppingB849B889AWT shows properly detaching listener at jawtWindow destruction. commit 0c401343d6280d5de52fbf652d94ad9a47bd9d3c Author: Sven Gothel Date: Fri Nov 15 11:54:14 2013 +0100 Applet Test Bug848AppletGLCanvas01: Only use vsync-interval 1 for last GLJPanel commit 0db2635c337c59a149f601ef8d72b26ead4353b1 Author: Sven Gothel Date: Thu Nov 14 20:39:31 2013 +0100 TestPerf001GLJPanelInit02AWT: Wrong test name 'Gears' -> 'Nop' commit 0302b5f91189a8b2c1e22f5a299f1ea81e599b1e Author: Sven Gothel Date: Thu Nov 14 14:57:14 2013 +0100 Bug 904 - GLJPanel: Add property to skip isGLOriented() based vertical flip by default (2/2) Property 'jogl.gljpanel.noverticalflip' will set the skipGLOrientationVerticalFlip default to true - intended for perf. testing of existing applications commit ef43f6afc7bdb8d157f1110e3bf8f688c7c9fb50 Author: Sven Gothel Date: Thu Nov 14 13:52:43 2013 +0100 Bug 904 - GLJPanel: Allow user to skip isGLOriented() based vertical flip of offscreen backend Add new GLJPanel method 'setSkipGLOrientationVerticalFlip(..)': /** * Set skipping {@link #isGLOriented()} based vertical flip, * which usually is required by the offscreen backend, * see details about vertical flip * and FBO / GLSL vertical flip. *

* If set to true, user needs to flip the OpenGL rendered scene * if {@link #isGLOriented()} == true, e.g. via the PMV matrix.
* See constraints of {@link #isGLOriented()}. *

*/ public final void setSkipGLOrientationVerticalFlip(boolean v) { GearsES2: Handles 'flipVerticalInGLOrientation' Unit test 'TestPerf001GLJPanelInit02AWT' validates and measures performance. commit 937b29bc3b3d33d2928956ceacbfe55ef77346de Author: Sven Gothel Date: Wed Nov 13 17:53:57 2013 +0100 NEWT: Add more documentation to WindowImpl's doPointerEvent(..) and consumePointerEvent(..) impl. details commit 0605acdcc28857182a9153a7758f4584f9fcef70 Author: Sven Gothel Date: Wed Nov 13 15:44:35 2013 +0100 GLJPanel: Remove unused import commit f76df4a398ccf18ca738a0124a9c57feb64e134b Author: Sven Gothel Date: Tue Nov 12 12:02:56 2013 +0100 Fix javadoc: TileRendererBase (links to manual anchors) and GLSharedContextSetter (remove <> in links, more details on Immersion.16. commit 45ce96db65fa7cbfd3bcb3dd4503bc6251d2e493 Author: Sven Gothel Date: Sun Nov 10 20:59:03 2013 +0100 Fix Bug 889 [Related: Bug 816, Bug 849, Bug 729] - GLCanvas disappear when moves between two JFrame When JAWTWindow's visibility tracker updates component's local visibility, it should read it's local visibility state instead 'trusting' the passed state. Make JAWTWindow's visibility tracker DEBUG output more brief for readability. commit b7672bbe54d406dbf347673a85b9c9e4a8e6469a Author: Sven Gothel Date: Sun Nov 10 16:08:16 2013 +0100 Add TestGLWindows03NEWTAnimResize: Test NEWT basic resize while holding position .. (to be refined) commit ce255aba6475c0a7b12f044a8ea700d5184f2b91 Author: Sven Gothel Date: Sun Nov 10 14:09:00 2013 +0100 Bug 899: Validate whether we propagate WNDPROC as retrieved from 'getDummyWndProc0()' in RegisteredClassFactory - Result: Yes we do. GDI.initSingleton() dummyWindowClassFactory RegisteredClassFactory[moduleHandle 0x13f3e0000, _dummyWindow_clazz, wndProc 0x6c101de6, shared[refCount 0, class null]] GDI.CreateDummyWindow() dummyWindowClassFactory RegisteredClassFactory[moduleHandle 0x13f3e0000, _dummyWindow_clazz, wndProc 0x6c101de6, shared[refCount 1, class RegisteredClass[handle 0x13f3e0000, _dummyWindow_clazz0]]] GDI.CreateDummyWindow() dummyWindowClass RegisteredClass[handle 0x13f3e0000, _dummyWindow_clazz0] ++ Note: The RegisteredClassFactory mechanism is used for NEWT Windows as well. commit 69c97809948249a40da29db681083023a92bc041 Author: Sven Gothel Date: Sun Nov 10 13:33:36 2013 +0100 Fix Bug 901 - NEWT: Lookup Windows 7 Touch Event Functions Dynamically to not break Windows < 7 Compatibility commit 4d79797fecfb7bfc725dfea26573b15b9b365181 Author: Sven Gothel Date: Sun Nov 10 10:03:30 2013 +0100 Tests: Align NEWT parenting focus tests (package and class names) using NewtCanvasAWT commit f3ef5de2b2d183f44c0e8e2001aaf7b88dfa27a1 Author: Sven Gothel Date: Sun Nov 10 07:19:04 2013 +0100 Simplify Animator* Synchronization: Remove barrier 'stateSync' and favor simple 'synchronized' on Animator for field-get, which is already used in most methods Utilizing a 2nd synchronization object 'stateSync' besides the main sync object, Animator itself, is hard to maintain. It's performance advantages for querying states ae questionable and may even introduce bugs. Use synchronization on Animator instance for all field read/write access. Fix unsynchronized write access of 'animThread' in Animator.MainLoop.run(). commit 733cc83bf15815102c8d745d5f912855354f818b Author: Sven Gothel Date: Sat Nov 9 20:12:32 2013 +0100 Tests: Add com/jogamp/opengl/test/junit/jogl/acore/anim Animator test package commit edf80417e001e480b35636b8db379fd1bf63b8e1 Author: Sven Gothel Date: Sat Nov 9 11:13:11 2013 +0100 TestPerf001GLJPanelInit02AWT: Same size for !overlap and overlap commit d896598b0b0c79511b3a00b65467cad2aad41694 Author: Sven Gothel Date: Fri Nov 8 15:51:57 2013 +0100 TestPerf001GLJPanelInit02AWT: Add overlapping test .. commit 8f1373e15eef1fb8bd00dfe500a2eddc71a74d7e Author: Sven Gothel Date: Thu Nov 7 15:30:26 2013 +0100 Android ES3 Movie Demos: Add workaround for: P0003: Extension 'GL_OES_EGL_image_external' not supported + // Bug on Nexus 10, ES3 - Android 4.3, where + // GL_OES_EGL_image_external extension directive leads to a failure _with_ '#version 300 es' ! + // P0003: Extension 'GL_OES_EGL_image_external' not supported + preludeGLSLVersion = false; commit 144b9ef5a433b2a93f5503b1c935c8f7ec61a0de Author: Sven Gothel Date: Thu Nov 7 13:38:16 2013 +0100 GLJPanel: Don't ctor DefaultGLCapabilitiesChooser() if null chooser is passed, this allows native GLCaps/config query to follow fast-path commit 6395670886513796b747e7aaef2ebfbbcda7b07e Author: Sven Gothel Date: Thu Nov 7 13:37:29 2013 +0100 WindowsWGLGraphicsConfigurationFactory: Fix chosenPFDID -> recommendedIndex (!skipCapsChooser mode) Regression of commit cf1163fc88976e7087d3a17524a49139e35a4708: Commit dropped seeking recommendedIndex of chosenPFDID within cleaned-up availableCaps when in !skipCapsChooser mode. commit e3f1e60718b795c32b6a93b2a5b1567f4103784c Author: Sven Gothel Date: Thu Nov 7 13:32:20 2013 +0100 WGLGLCapabilities: Print pfdID as decimal (convention) commit 3e28724a359dfe718bb67562818b8406bd26ed86 Author: Sven Gothel Date: Thu Nov 7 13:31:57 2013 +0100 TestTiledPrintingGearsSwingAWT: Cleanup whitespaces commit 1822a28367e69aa63eb02017fe8cd333a1f5e64b Author: Sven Gothel Date: Thu Nov 7 11:34:04 2013 +0100 GLJPanel: Remove redundant !isInitialized [double-]check in initializeBackendImpl(), already tested before function entry! commit 3e1924e73d583d344b45839bed3a7bd51751a019 Author: Sven Gothel Date: Thu Nov 7 11:33:14 2013 +0100 Bug 898: Apply best efford on Animator operation's finishLifecycleAction(..) in !blocking mode, i.e. notifyAll() if waitCondition holds and test again commit 46209e7fc903ae14ee2b0a0f443b08b68ebd53c4 Author: Sven Gothel Date: Thu Nov 7 08:37:44 2013 +0100 Android Newt[Debug|Version]Activity: Separate both activities (testing odd reusing of app) commit 2dce639c479f820d1a1e701f5eddffc4b02f5e0f Author: Sven Gothel Date: Thu Nov 7 08:36:46 2013 +0100 Bug 890 - Fix GLES3 Profile Mapping, i.e. GL2ES2 queries and mappings; Validate isGLES*() usage and definition ; Add and use ShaderCode.createExtensionDirective(..) - Fix GLES3 Profile Mapping, i.e. GL2ES2 queries and mappings - GLProfile: Add GL2ES2 -> ES3 mapping - EGLContext: Reuqest major '3' for ES3 - EGLGLCapabilities/EGLGraphicsConfiguration: Consider EGLExt.EGL_OPENGL_ES3_BIT_KHR - Validate isGLES*() usage and definition - Fix BuildComposablePipeline's isGLES() code - For GLSL related queries use isGLES() instead of isGLES2(), which would exclude ES3 - Add and use ShaderCode.createExtensionDirective(..) - Supporting creating GLSL extension directives while reusing strings from GLExtensions - Minor cleanup of GLContextImpl.setGLFuncAvail(..) commit 0a06ca59520c611a3d67fe0f0ddbdcfef7ae3870 Author: Sven Gothel Date: Thu Nov 7 06:24:22 2013 +0100 Android NEWT*Activity: Request GL2ES2 instead of GLES2 (Be aware of ES3) commit 3fbaf63c8b8bfa8e1d31e06c581fbd0045f34386 Author: Sven Gothel Date: Thu Nov 7 06:23:30 2013 +0100 Android: Cleanup Movie*ActivityLauncher* properties commit 55e897e9b4484a6770a58c7943361663bb2355e4 Author: Sven Gothel Date: Thu Nov 7 06:22:52 2013 +0100 Android: Add NewtDebugActivity commit aeae8452115b10c3d54a9836159a8a7d8b5520f8 Author: Sven Gothel Date: Wed Nov 6 18:32:35 2013 +0100 TestPerf001GLWindowInit03NEWT: Don't run !reuse Display - Crash on Windows/ATI driver .. commit 10fee84d50d1085d977aab413dd446834798e009 Author: Sven Gothel Date: Wed Nov 6 15:34:09 2013 +0100 Bug 894 - GLJPanel: Expose 'initializeBackend(boolean offthread)' allowing user to trigger backend initialization eagerly and offthread (optional, !WINDOWS) TestPerf001GLJPanelInit02AWT compares all variations: no-gl, glcanvas, gljpanel and gljpanel-initMT (offthread) commit de8a370258e60ad9bcf40cf8e6d239ecf306114e Author: Sven Gothel Date: Wed Nov 6 15:30:50 2013 +0100 Bug 894 - GLDrawableFactory* [dummy|offscreen] Surface creation w/ own device does _not_ require locking on global shared device. commit 35ce176152b7d1e6d4eb52f203882fdce4b465c3 Author: Sven Gothel Date: Wed Nov 6 07:09:01 2013 +0100 NativeWindow *GraphicsDevice: Align constructors to simplify call hierarchy for analysis. commit 24eab4dc2a14eed97897ec61b69f7f845ab84e04 Author: Sven Gothel Date: Wed Nov 6 07:06:58 2013 +0100 NEWT Window: Expose 'setVisible(boolean wait, boolean visible)' allowing applications to not block until window becomes visible. commit 44117f78f5d4fb3329409a92d758562d013298af Author: Sven Gothel Date: Tue Nov 5 18:47:56 2013 +0100 Bug 888 / Bug 891- Enhance GLCapabilities-Query: Refine unit tests commit 1d426dd08797a3164e0a7cdf6007d3e750650265 Author: Sven Gothel Date: Tue Nov 5 16:53:18 2013 +0100 JNI Code: Call DeleteLocalRef(..) manually. commit b3f6b2fc9ec8aaf6aa5b4297aef1f5228eb15702 Author: Sven Gothel Date: Tue Nov 5 16:52:29 2013 +0100 Bug 888 / Bug 891- Enhance GLCapabilities-Query: Add raw perf. test case 'choose' only and 'full' offscreen-drawable w/ context test01ChooseOnly exposes X11/GLX perf. enhancement of 613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d: PRE CHANGE: ++++ UITestCase.setUp: com.jogamp.opengl.test.junit.jogl.perf.TestPerf001RawInit00NEWT - test01ChooseOnly INIT START #0 Run: 0, count 50/50 raw: choose 503/t 10.06/1 INIT END #0 INIT START #1 Run: 1, count 50/50 raw: choose 384/t 7.68/1 INIT END #1 INIT START #2 Run: 2, count 50/50 raw: choose 344/t 6.88/1 INIT END #2 POST CHANGE: ++++ UITestCase.setUp: com.jogamp.opengl.test.junit.jogl.perf.TestPerf001RawInit00NEWT - test01ChooseOnly INIT START #0 Run: 0, count 50/50 raw: choose 49/t 0.98/1 INIT END #0 INIT START #1 Run: 1, count 50/50 raw: choose 43/t 0.86/1 INIT END #1 INIT START #2 Run: 2, count 50/50 raw: choose 38/t 0.76/1 INIT END #2 commit 507113e471e165d151bc152989e687439312686a Author: Sven Gothel Date: Tue Nov 5 12:58:36 2013 +0100 Bug 888 / Bug 891- Enhance GLCapabilities-Query: Add perf. test case Even though the test case itself cannot show the proper initialization time, it can be used w/ an attached profiler i.e. Test w/ 50 X11GLXGraphicsConfigurationFactory.chooseGraphicsConfigurationFBConfig() invocations: - pre change: 1.708 ms - post change: 650 ms (613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d) commit 1f79656d49a803da74116378f84f26dc4d79db23 Author: Sven Gothel Date: Tue Nov 5 11:09:16 2013 +0100 Test DumpGLInfo: Dump caps list and extenions commit b129bd586b1e24181003f505514244004337fa7c Author: Sven Gothel Date: Tue Nov 5 11:08:51 2013 +0100 Bug 888 - Validate CPU Runtime Performance: Only use one HashMap to collect unified gl- and glx-extension strings. - HashMap is more efficient than HashSet - No need to use sub HashSet's .. we can use global HashMap. 'Loosing' duplicate GLX entries due to GL duplicates is acceptable. commit cf1163fc88976e7087d3a17524a49139e35a4708 Author: Sven Gothel Date: Tue Nov 5 11:03:33 2013 +0100 Bug 888 / Bug 891 - Enhance GLCapabilities-Query: Apply changes of commit 613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d to EGL and WGL. Note: WGL config query is already performed as a bulk operation. Note: OSX does not perform such queries. commit 613e33ee8ffc1f2b9c5db1e1b5bb5253a159ed6d Author: Sven Gothel Date: Mon Nov 4 15:07:14 2013 +0100 Bug 888 - Validate CPU Runtime Performance: X11GLXGraphicsConfiguration.GLXFBConfig2GLCapabilities(..) X11GLXGraphicsConfiguration.GLXFBConfig2GLCapabilities(..) ran over all FB configs and for each it grabbed native config values separately. Fetching them in bulk mode saves around 7% of this function's cost. Also reuse XRenderPictFormat instance for 'XRenderDirectFormat XRenderFindVisualFormat(..)' call, saving a few NIO creation cycles w/ StructAccessor. Biggest savior is X11GLXGraphicsConfigurationFactory.chooseGraphicsConfigurationFBConfig()'s fast path w/o chooser and usable 1st FBConfig. Here we only issue 'GLXFBConfig2GLCapabilities(..)' on the first valid entry. Test w/ 50 X11GLXGraphicsConfigurationFactory.chooseGraphicsConfigurationFBConfig() invocations: - pre change: 1.708 ms - post change: 650 ms Time is no spent almost solely on native glXChooseFBConfig (546ms). commit 7433e513c1f109f75aa34c224b1f5f14b612cba8 Author: Sven Gothel Date: Sat Nov 2 16:26:02 2013 +0100 GLContextImpl: Move sharedContextHandle check to makeCurrentWithinLock(..) and let it fail there instead of within impl. class, only pass the handle - simplifies and removes redundancy.