commit ba0dc6462a88ee7512a087deaaca760239915548 Author: Sven Gothel Date: Tue Mar 11 01:59:24 2014 +0100 doc/Platforms.txt: Update Virtualbox 4.3 Tests .. w/ Debian Host and Client (Wheezy Mesa 8.0.5-SW and Jessie Mesa 9.2.2-SW) commit fdea8596b2ccc1221a980e4c9fd10de85d885a3c Author: Sven Gothel Date: Tue Mar 11 01:44:31 2014 +0100 Bug 961: Fix commit fdd60adb1d421f2018b47ee17e9079c94b54910f (memmove byte-count) memmove's byte-count was just giving the element-count, missing the element-size multiplier to actually pass byte-count commit fdd60adb1d421f2018b47ee17e9079c94b54910f Author: Sven Gothel Date: Mon Mar 10 22:14:34 2014 +0100 Bug 961: Stabilize glXGetFBConfigAttrib(..) and glXChooseFBConfig(..) Usage Against OpenGL Bugs ; Fix glXGetFBConfigs - glXChooseFBConfig(..) - Remove NULL FBConfig pointer from result in native code, which has been observed in Mesa 8.0.5-4 libgl1-mesa-swx11 (Debian-7). - glXGetFBConfigs - Add manual implementation similar to glXChooseFBConfig - glXGetFBConfigAttrib(..) - glXGetFBConfig(..) - Returns boolean reflecting success, don't throw exception - caller handles error - Caller ignore failure if not essential (i.e. already chosen config) commit 132f6fe9eeada4321d776d6332482854c82f24e2 Author: Sven Gothel Date: Fri Mar 7 17:29:13 2014 +0100 Test script: Add TestGLReadBuffer01GLCanvasAWT commit c44f25249829d6463e76e71d468cc4be4a586401 Author: Sven Gothel Date: Fri Mar 7 17:28:48 2014 +0100 Bug 975: Add TestGLReadBuffer01GLCanvasAWT Unit Test (AWT Frame w/ GLCanvas) commit ecbf9742f5a4ce100388083babec25d098633021 Author: Sven Gothel Date: Fri Feb 28 09:13:19 2014 +0100 Refine commit 9fb1e46e43900ec9b2f9c9af1fc8984e101c8811: Avoid loading [j]awt native libs and null-cursor creation in headless mode Commit 9fb1e46e43900ec9b2f9c9af1fc8984e101c8811 exposed sideffects, i.e. libjawt.so could not be loaded in JAWTUtil's static-init while in headless mode. JAWTUtil's static init block was triggered from AWTMisc debug flag changes. Fix drops operations in headless mode: - JAWTUtil - awt native lib loading - querying headfull features (locking, java2d ..) - AWTMisc - creating null cursor commit 72d44215a266ccb569efbd5af3142385c4442fe9 Author: Sven Gothel Date: Wed Feb 26 16:54:21 2014 +0100 Bug 984 - Fix GLBufferObjectTracker.mapBuffer(..)'s mapBufferImpl(..) parameters for mapBufferRange(..) and mapNamedBufferRange(..) GLBufferObjectTracker.mapBuffer(..) variant for mapBufferRange(..) and mapNamedBufferRange(..) used wrong parameters in it's mapBufferImpl(..) call. Fixed and added mapBufferRange(..) test in TestMapBufferRead01NEWT commit 9fb1e46e43900ec9b2f9c9af1fc8984e101c8811 Author: Sven Gothel Date: Wed Feb 26 15:53:41 2014 +0100 AWTMisc.static: Allow static creation of 'null' AWT cursor to fail (i.e. AWT headless) commit c2e6233c57f47c067dbb24f4a6a127fbaedf7a08 Author: Sven Gothel Date: Tue Feb 25 17:16:47 2014 +0100 Fix whitespaces of commit 78fcb8228d4a391054501aef16eb0462322ba39d and WindowImpl comment commit 083e430a76586347e87f4e2a25d92ac00cdcc61a Author: Sven Gothel Date: Tue Feb 25 16:53:10 2014 +0100 Bug 937 : Fix regression of commit 071bdd6ce9f8c41ccecdbf8bc74f276ccd7ff651 (which disables print if !isShowing()) Commit 071bdd6ce9f8c41ccecdbf8bc74f276ccd7ff651 uses 'isShowing' state to determine whether to display or not. It also uses 'isShowing' instead of 'isVisible' for printing, which is a regression, since not showing elements offscreen shall be able to be printed. commit ac7de4a7b2cc939312cbeb88dd709a297c96c13c Author: Xerxes Rånby Date: Tue Feb 25 14:36:22 2014 +0100 Bug 927: Try fix deadlock. (14:15:13) sgothel: @Xerxes: In doResume .. do a 'while( !isActive && !shallPause && isRunning ) {' (14:15:52) sgothel: doPause: while( isActive && !shallPause && isRunning ) (14:31:55) sgothel: doPause only: while( isActive && isRunning ) { commit 78fcb8228d4a391054501aef16eb0462322ba39d Author: Petros Koutsolampros Date: Mon Feb 24 16:37:01 2014 +0000 A more wholesome solution to the windowing problems in OSX. As described in bug https://jogamp.org/bugzilla/show_bug.cgi?id=969 commit c67de337a8aaf52e36104c3f13e273aa19d21f1f Author: Sven Gothel Date: Sat Feb 22 08:05:42 2014 +0100 Bug 927 - Multithreading (MT) - GLMediaPlayer.GLMediaEventListener: Remind that commands shall be off-loaded on another thread! commit c4368e89c0fc3ee4de659cd760bc812092bba054 Author: Sven Gothel Date: Sat Feb 22 08:04:45 2014 +0100 ALAudioSink: Add thread-name to exceptions; stopImpl shall not throw an exception at destroy commit 13d850c7bf93648dc24e3f01f6f8c9550fba0d97 Author: Sven Gothel Date: Sat Feb 22 07:53:29 2014 +0100 Bug 927 - Multithreading (MT) issues ALAudioSink Add global synchronization around ALAudioSink constructor code, which 'magically' solves the openal-soft multithreading issues .. This is a workaround. commit b9e89c35dac3c19e026d2a0161649a065b3dceee Author: Sven Gothel Date: Sat Feb 22 07:48:03 2014 +0100 Bug 927 - Multithreading (MT) issues libav/ffmpeg FFMPEG Natives: - Move 'mutex_avcodec_openclose' to local static and initialize at initSymbols0 - setStream0: - Add another locked mutex block around: - [ sp_avformat_open_input .. sp_avformat_find_stream_info ] This solves the issue of: [NULL @ 0x89d20c60] insufficient thread locking around avcodec_open/close() commit dc67f891de5ef31ed8e0e83e7a53e4bdcd881d29 Author: Sven Gothel Date: Fri Feb 21 12:30:03 2014 +0100 Match Bitstream changes of gluegen commit 4447232af0d95a4348d09d4ed03fbef48394ca3a commit 37b57106f4ef6d64b38cd9cbfccfcf5f332b5525 Author: Xerxes Rånby Date: Fri Feb 21 00:46:47 2014 +0100 Bug 927: demos/es2/av/CrossFadePlayer Parallel media player that demonstrate CrossFade of audio volume during playback. This player also demonstrate audio only playback of the GLMediaPlayer. The CrossFadePlayer is a reproducer for FFMPEGMediaPlayer libav multithreading initialization errors. [NULL @ 0x7ff904065280] insufficient thread locking around avcodec_open/close() reproducer: java -cp gluegen/build/gluegen-rt.jar:jogl/build/jar/jogl-all-mobile.jar:jogl/build/jar/jogl-test.jar:joal/build/jar/joal.jar com.jogamp.opengl.test.junit.jogl.demos.es2.av.CrossFadePlayer *.mp3 Signed-off-by: Xerxes Rånby commit c6c04751a04bd05d71e54404fa61681c57d7352d Author: Sven Gothel Date: Thu Feb 20 17:48:21 2014 +0100 Cleanup imports TestGLReadBuffer01GL* commit ef2a1bf80f8afe9d9249a196d1842de0b74251a5 Author: Sven Gothel Date: Thu Feb 20 17:47:41 2014 +0100 Bug 980: Use Bitsream class for JPEGDecoder commit b96fc594f15fcf9ee0fd238ce8d7a10aea781d32 Author: Sven Gothel Date: Tue Feb 18 21:49:37 2014 +0100 GLContextImpl/GLDrawableImpl.getDefaultReadBuffer(..): Pass hint whether dedicated read-drawable is being used (double buffering) commit 41190c3830157abdf9649cbf7767e57108f55075 Author: Sven Gothel Date: Tue Feb 18 21:47:06 2014 +0100 Bug 975 - GLJPanel's OffscreenDrawable shall not double swap - Fix auto-swap mechanism ; Refined API doc getDefaultReadBuffer() ; Add GLDrawableUtil.swapBuffersBeforeRead(..) Commit 82f679b064784213591b460fc5eaa1f5f196fbd1 which introduces the default swap-buffers mechanism is erroneous: The OffscreenBack backend requires the following operation order: Order-1: [1] - GL display [2] - GL swapBuffers (always due to single-buffer non-MSAA or MSAA offscreen drawable) [3] - readPixels +++ Commit 82f679b064784213591b460fc5eaa1f5f196fbd1 however introduced: Order-2: [a] - GL display [b] - readPixels [c] - GL swapBuffers (always due to single-buffer non-MSAA or MSAA offscreen drawable) since [a] and [b] happened in Updater's display method, and [c] followed the same triggered by GLAutoDrawableHelper. +++ The proof, commit d46d9ad8f998a7128d9f023294d5f489673d6d8a, is faulty, since it always included the 'snapshot' GL event listener which turned-off auto-swap and swapped before read-pixels. TL;DR it enforced proper Order-1. +++ This fix allows the Backend to intercept disable GLDrawableHelper's setAutoSwapBufferMode(..) and perform the auto-swap mode itself in the proper Order-1. The unit test has been refined to optionally disable the snapshot to validate auto-swap mode. +++ Refined GLBase and GLContext's API doc for 'getDefaultReadBuffer()' +++ Add GLDrawableUtil.swapBuffersBeforeRead(..) and reuse it for TileRendererBase (original impl.). commit d46d9ad8f998a7128d9f023294d5f489673d6d8a Author: Sven Gothel Date: Tue Feb 18 19:12:46 2014 +0100 Bug 975 - GLJPanel's OffscreenDrawable shall not double swap - Refine unit test for visual validation of 'no frame lag' To validate whether a 'display' command w/o animator results to the desired frame we introduce a 'userCounter' in TextRendererGLEL. The latter gets increased and maybe visually validated by a key-press -> display. Results: In all modes, MSAA or !MSAA, or flip - the result is valid. Tested on windows and linux. commit e685f79ec7071e266a1bd3d3ce3e742397b5372e Author: Sven Gothel Date: Sun Feb 16 06:12:45 2014 +0100 Bug 927: Fix minor MT issues w/ libav/ffmpeg Issue: [NULL @ 0x35bde60] insufficient thread locking around avcodec_open/close() Decorating said libav functions w/ mutex lock/release. Abstract impl. to either use pthread or JNI Monitor, but using the latter to reduce dependencies (ming64 windows). FFMPEGNatives is now an abstract class containing the 'static final Object mutex_avcodec_openclose' commit a6acce1be19060a6a4801582f0534e0d6887467a Author: Sven Gothel Date: Sat Feb 15 23:36:19 2014 +0100 Add make/scripts/make.jogl.all.macosx-clang.sh commit 1866f2c54a76ba979ebc6608d1fca1293c527fc6 Author: Sven Gothel Date: Sat Feb 15 23:33:47 2014 +0100 doc/HowToBuild.html: Remove duplicate line commit 1b301c128b25d825ac1ca8acf1795d43a4ca6a38 Author: Sven Gothel Date: Sat Feb 15 23:33:26 2014 +0100 Movie* Demo: Utilize TextRendererGLELBase (fps, vsync, ..) commit 82c0cb4bfcd62a718699cafcd9cf6fe53a0802e5 Author: Sven Gothel Date: Sat Feb 15 23:32:27 2014 +0100 Extract TextRendererGLELBase (demo) - Utilize general text rendering for demos. commit 1e1b408ba1527edc2ee5ceede92816ee87e4c461 Author: Sven Gothel Date: Sat Feb 15 23:28:25 2014 +0100 Graph: RendereState: Create own PMVMatrix if passed value is null; Renderer: Add reshapeNotify(..) for NOP PMV reshape notification commit 1638fb3e80a1102670b5d216647ee6fce0031d7f Author: Sven Gothel Date: Sat Feb 15 09:17:43 2014 +0100 doc/HowToBuild.html: Complete Debian package list, add note on multiarch packages commit 938fbc9e4cb58c1ab6a6f66f128189ed7b634955 Author: Sven Gothel Date: Sat Feb 15 09:12:30 2014 +0100 Bug 927 - Multithreading (MT) issues with ALAudioSink (openal-soft) - Using update openal-soft (commit 7297c3214a4c648aaee81a9877da15b88f798197) - Analyzed openal-soft threading issues: - a global-lock would have removed the issue - turns out that using ALC_EXT_thread_local_context's alcSetThreadContext(..) instead of alcMakeContextCurrent(..) solves the issue - Cleaned up al*GetError() queries and handling - Simplified flush/dequeue buffers commit 82f679b064784213591b460fc5eaa1f5f196fbd1 Author: Sven Gothel Date: Fri Feb 14 06:37:13 2014 +0100 Bug 975 - GLJPanel's OffscreenDrawable shall not double swap - Use default auto-swap mechanims Refines commit 908ebd99d1eb57ce773a1fdd67c76886da86b9e6 Note that the test case decide whether to auto-swap (after read-pixels) or not auto-swap (manual swap before read-pixels). See UITestCase.swapBuffersBeforeRead(GLCapabilitiesImmutable chosenCaps): Determines whether the chosen GLCapabilitiesImmutable requires a swap-buffers before reading pixels. Usually one uses the default-read-buffer, i.e. GL.GL_FRONT for single-buffer and GL.GL_BACK for double-buffer GLDrawables and GL.GL_COLOR_ATTACHMENT0 for offscreen framebuffer objects. Here swap-buffers shall happen after calling reading pixels, the default. However, multisampling offscreen GLFBODrawables utilize swap-buffers to downsample the multisamples into the readable sampling sink. In this case, we require a swap-buffers before reading pixels. Returns: chosenCaps.isFBO() && chosenCaps.getSampleBuffers() +++ - GLJPanel: - Remove SurfaceUpdatedListener mechanism in favor of default auto-swap-buffer via GLDrawableHelper. This removes complexity. - postGL does not need to perform explicit swapBuffer operation, but rely on GLDrawableHelper and the default mechanism. This is also compatible w/ J2D backend. - Use GLDrawableHelper for setAutoSwapBufferMode(..) and getAutoSwapBufferMode() +++ UnitTests: - UITestCase: - Add 'boolean swapBuffersBeforeRead(GLCapabilitiesImmutable chosenCaps)' to determine whether swapBuffers() must occure before read-pixels. See above. - GLReadBuffer00Base* - remove explicit addSnapshotGLEL/removeSnapshotGLEL - add TextRendererGLEL, to display frame-count and -dimension - SnapshotGLEL* - simply toggle auto-swap in their init(..) and dispose(..) method! - clear back-buffer if 'swapBuffersBeforeRead' to test whether the right buffer is being used for read-pixels. commit fb12b0b6fa37d3a4136bb04597b3c32b15832c82 Author: Sven Gothel Date: Fri Feb 14 06:19:35 2014 +0100 GLReadBufferUtil: Set PACK_ROW_LENGTH for ES3 as well - also set ReadBuffer to default. commit d55fa82fe6f236523dd4f701a15057b1a0ca8e36 Author: Sven Gothel Date: Fri Feb 14 06:18:27 2014 +0100 GLPixelStorageModes: Safe and restore GL2ES3 modes, i.e. add missing GLES3 modes. GLStateTracker: Use proper GL names for enums commit 908ebd99d1eb57ce773a1fdd67c76886da86b9e6 Author: Sven Gothel Date: Thu Feb 13 21:32:36 2014 +0100 Bug 975 - GLJPanel's OffscreenDrawable shall not double swap (custom swap by GLEventListener using [AWT]GLReadBufferUtil) When utilizing [AWT]GLReadBufferUtil it is usually desired to read from the front-buffer instead the back-buffer. The latter may not be defined, e.g. when using MSAA. A GLEventListener utilizing [AWT]GLReadBufferUtil, must perform the drawable.swapBuffers() to be able to read from the front-buffer. Usually GLAutoDrawable.setAutoSwapBuffer(false) should be called here, to avoid a double swap - however GLJPanel does not support toggling auto-swap since it requires to control swap for it's own read-pixels. Remedy for GLJPanel: - GLJPanel issues helper.setAutoSwapBufferMode(false) - immutable - Enable GLJPanel.swapBuffer() if initializes This was previously disabled. - GLJPanel's OffscreenBackend listens to surfaceUpdated, to be notified whether postGL needs to swap buffer or the drawable.swapBuffer() was already called between preGL and postGL. See unit tests adding/removing a snapshot GLEventListener performing swapBuffers() and setting auto-swap accordingly. commit 8be9d9b5bd71854f4da15294b47125a8a4975e31 Author: Sven Gothel Date: Thu Feb 13 18:12:27 2014 +0100 SurfaceUpdatedListener: Order methods in impl. Class; SurfaceUpdatedListener: Mark methods final, use volatile 'isEmpty' to bail out early @ surfaceUpdated. commit 325986eb0b14e90d9ef35cbb0ca57c9c91df4827 Author: Sven Gothel Date: Thu Feb 13 03:33:03 2014 +0100 Bug 974 - Add missing [GL4] glMultiDrawArraysIndirect(int mode, int type, long indirect_offset, int drawcount, int stride) commit 8631e403aa0c02c53b06819ef9b112af1885d4f7 Author: Sven Gothel Date: Thu Feb 13 01:06:31 2014 +0100 TextureIO: Fix PNGTextureWriter Vertical-Flip, i.e. pass TextureData's getMustFlipVertically() to PNGPixelRect commit 1d2515da352a79c239efecdfa3e0fade47779781 Author: Sven Gothel Date: Thu Feb 13 01:04:47 2014 +0100 Bug 962 - AWTGLReadBufferUtil should use aligned BufferedImage [for resized images]; Fix GLReadBufferUtil GL_PACK_ROW_LENGTH AWTGLPixelBuffer is being reused when used via AWTGLPixelBufferProvider even when resized. AWTGLPixelBufferProvider uses GLPixelBufferProvider's requiresNewBuffer(..) which returns true if - allowRowStride==true and pixel-buffer size < required-size, or - allowRowStride==false and pixel-buffer size < required _or_ width doesn't match otherwise it returns true, i.e. the AWTGLPixelBuffer is reused. Hence the used BufferedImage might need to be aligned, i.e. using AWTGLPixelBuffer's getAlignedImage(..). +++ GLReadBufferUtil shall use current texture-data width for GL_PACK_ROW_LENGTH, not the static GLPixelBuffer's width, which may not reflect image dimension (resize) +++ commit 21b68a5e73a672da34b37b5641b779aa1e3fa41d Author: Sven Gothel Date: Thu Feb 13 00:17:09 2014 +0100 TextureIO: Support PNGTextureWriter w/ TextureData IntBuffer (via PNGPixelRect and PixelFormatUtil) TextureData IntBuffer could be caused by AWT read-pixels but is not seamlessly supported via PNGPixelRect since the latter uses a hardcoded ByteBuffer. Add static PNGPixelRect.write(..) supporting IntBuffer to support this case for now. PNGPixelRect instances do not support any Buffer type to avoid a bloated implementation. PixelFormatUtil adds support for int32 pixel format conversion. commit 0666a9ee8332e8ab59d533c65552dae8c58cf267 Author: Sven Gothel Date: Wed Feb 12 02:55:14 2014 +0100 Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for TK specific implementations (Scaling) commit 84930529068062d29d48924b37953ecb1ee30bdd Author: Sven Gothel Date: Wed Feb 12 02:54:50 2014 +0100 Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for TK specific implementations (Scaling) Add FIXME note .. commit c5964bf2e3ebd6e05a7d551b033355c21ca9eea9 Author: Sven Gothel Date: Wed Feb 12 02:48:08 2014 +0100 Bug 972 - Reduce ClassLoader Lookup, i.e. Class.forName(..): GLProfile, GLContextImpl, DisplayImpl GLProfile, GLContextImpl: - ReflectionUtil.DEBUG_STATS_FORNAME: Dump forName stats if set - Cache GL*Impl and GL*ProcAddressTable Constructor for GLContextImpl's createInstance(..) - Remove off-thread early classloading thread which only adds complications DisplayImpl: - Remove one redundant availability test commit c3c204a2e374c1dc4c1fb51f15444e5b92850839 Author: Sven Gothel Date: Mon Feb 10 18:46:28 2014 +0100 Bug 970: NEWT OSX ChildWindow setVisible(..) does not hide child window appropriately Instead of using [mWin orderBack: mWin] for child windows, utilize [mWin orderWindow: NSWindowOut relativeTo: [pWin windowNumber]]