Sven Gothel (203): GLContext: Refine API doc (CONTEXT_NOT_CURRENT.. values) / Exception message GLDrawableFactory: Expose createDummyDrawable(..) / GLDrawableFactoryImpl: Make impl. methods final. GLFBODrawableImpl.initialize(): Unrealize when already unrealized shall not throw an exception - only dump DEBUG info! MouseEvent API doc: Add W3C PointerEvent Reference ES2 NEWT Tests: GearsES2/RedSquareES2 - Don'w use AWTRobot if AWT is n/a (Ji Gong manual testing) GLMediaPlayer: Add multithreaded decoding w/ textureCount > 2 where available EGL/FFMPeg. WIP! Fix regression of commit 6332e13b2f0aa9818d37802302f04c90a4fa4239 causing optional OMX to fail to compile SyncedRingbuffer: peek() don't throw an exception GLMediaPlayer Multithreaded Decoding: AudioSink (Part-2) - WIP GLMediaPlayer Multithreaded Decoding: GLMediaPlayer* (Part-3) - WIP Fix Bug 815: GL*: Change glIsEnabled() -> glIsBound() to reflect semanics - Also fix the exception message (enabled/disabled -> bound/unbound) SyncedRingbuffer: Add 'reset(boolean full)', simplify 'clear(..)'. Provide unit test for Bug 817 Refine unit test Bug 817 c19f9916bc59765e5aaf307b8ecd5d25dfcad6b6 / Add pbuffer and fbo testing Fix Bug 817 (1/2): GLPixelAttributes checks arguments and queried bytesPerPixel Fix Bug 817 (2/2): GLContextImpl's getDefaultPixelDataType()/getDefaultPixelDataFormat() use defaults (fix) SyncedRingbuffer Cleanup: private fields, clarify reset(boolean) GLMediaPlayer Multithreaded Decoding: GLMediaPlayer* (Part-4) - WIP GLMediaPlayerImpl: Refine getNextTexture(..) DEBUG output, put 'last SCR delay' in regular println. GLMediaPlayer: Use URI instead of URL / Misc refinements SyncedRingbuffer moved to GlueGen, commit 30475c6bbeb9a5d48899b281ead8bb305679028d AudioSink: Add END_OF_STREAM_PTS, initSink(..) args: frameGrowAmount and frameLimit allowing an optional used Ringbuffer to grow in implementation. Texture: Add 'toString()' and 'getTextureObject()' w/o GL instance to read existing object name. TextureSequence: Add END_OF_STREAM_PTS, remove 'blocking' from getNextTexture(..), may blocks .. or not, depending on implementation and state. GLMediaPlayer Multithreaded Decoding: GLMediaPlayer* (Part-5) - WIP FFMPEGMediaPlayer: Transform URI spaces '%20' to ' ' manually, libav doesn't work well w/ URI encoded names. JOGL/Util: Add generic 'TimeFrameI' for key frame animation of 'things' basen on integer milliseconds. *AudioSink: Add byte/time calc to AudioDataFormat, *AudioFrame OO changes, Reuses ALAudioFrames to ease GC, Ringbuffer changes GLMediaPlayer Multithreaded Decoding: GLMediaPlayer* (Part-6) - DONE AudioSink.init(..) abstract 'frame count' -> duration [ms] allowing non-frame based AudioSink's to deal w/ desired queue sizes. GLMediaPlayer/AudioSink: Add set[Audio]Volume(float v)/get[Audio]Volume() allowing to change the audio volume. AndroidGLMediaPlayerAPI14: Fix implementation to coop w/ threaded decoder / Add EOS detection, setAudioVolume(..) GLAutoDrawableBase: DEBUG code - Avoid NPE GLES3Impl: Add NOP 'finalizeInit()' method, to avoid GLContentImpl not finding it and dumping a DEBUG message libav/ffmpeg: Move current lavc53.lavf53.lavu51 (version 8) header files to their sub-folders; Add lavc54.lavf54.lavu52 (version 9) header files NullGLMediaPlayer: Fix reported VID (fake 0), no AID, textureCount == 2 libav/ffmpeg: Prepare for lavc54.lavf54.lavu52 ffmpeg/libav: lavc54.lavf54.lavu52 -> lavc54.lavf54.lavu52.lavr01: Adding libavresample of version 9 ffmpeg/libav: remove unsued header files AudioSink: Fixe type names ; Enhance AudioFormat negotiation ; ALAudioSink adds AL_SOFT_buffer_samples support w/ full AL caps libav/ffmpeg: version9: Add libavresample support ; Proper AudioFormat negotiation w/ AudioSink; Misc ffmpeg/libav: Remove 'dead' audio/video frame count relation snoop-code libav/ffmpeg: Compile/Link 2 versions of native FFMPEGMediaPlayer methods FFMPEGNatives -> FFMPEGv08Natives + FFMPEGv09Natives FFMPEGNatives*: Add missing license header ALAudioSink: Remove force DEBUG info GLMediaPlayer: Add camera input / FFMPEG: Fix 'av_packet' leak and add missing symbol 'av_realloc'. GLBuffers: Add forma GL_YCBCR_422_APPLE and types GL_UNSIGNED_SHORT_8_8_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE. Fix libav/ffmpeg compilation across platforms: Move header back to 'stub_includes' Fix libav/ffmpeg compilation across platforms: Remove symbolic links Fix libav/ffmpeg compilation: Use 'dot less' dir/file names; Compile ffmpeg version dependent c-files individually and inject object files. ; ffmpeg *register_all() at setStream0(..) FFMPEGMediaPlayer: Fix av-audio-fmt -> AudioFormat parsing (fixedP was wrong for float values) Fix libav/ffmpeg compilation; FFMPEGMediaPlayer Enahncements (More YUV*, Use def. high camera options, cleanup symbols) Enhance GLMediaPlayer: Full FFMPeg support, 'dshow' camera support on windows, 2 more pixel formats, fail-safe data handling FFMPEGMediaPlayer: Handle v-flipped 'bottom-up' pictures ; Refine API doc 'camera ID' Texture: Add 'setMustFlipVertically(boolean)' allowing to change the flipped characteristics. GLMediaPlayer enhancements: State, Camera options, detect and act on orientation change (flipped), API-doc, GLWindow: Shorten API-doc references Doc/HowToBuild: Windows x32 and x64 require new MingW64 Versions, tested w/ >= 4.8.1 Scripts/Windows: Test x32 and x64 builds w/ ffmpeg 2.x ! FFMPEG/GLMediaPlayer: Fix compiler errors w/ new MingW 4.8.1: 'strsafe.h' -> don't use tchar.h; Fix compiler warning: Add missing (intptr_t) cast. GLContext: Add missing 'isGLESProfile()' and fix 'isGLcore()', i.e. GL2ES2 -> GLES2 (in profile set) WWW: Remove 'Meet us @ SIGGRAPH 2013' ; Siggraph 2013 link to local doc page! GLMediaPlayer: pause() -> pause(boolean flush): Allowing to flush buffers, next frame after play() will provide new frame. Added API doc. ffmpeg_impl_template: Remove DEBUG line .. FFMPEGMediaPlayer: Handle use-case of having [av|sw]resample lib, but not compiled for it -> pass Add '@FixMethodOrder(MethodSorters.NAME_ASCENDING)' to all *Test* classes; Relying on junit 4.11 + hamcrest 1.2 (deployed in Gluegen junit.jar) Animator/GLWindow: Catch 'ThreadDeath/Throwable' and dump info in DEBUG mode (cosmetic change only); Typo in comment; TestSharedContextListNEWT2: Stop animator. X11GLXDrawableFactory.Shutdown: Disable shared context destruction since it may lead to a JVM freeze .. Revert commit 4beef4fe856690b070ba06a6caf4515aebd7171b manually for testing purposes .. (ATI fglrx driver issues) Fix Bug 810: Adding Julien Gouesse's fix while moved the new 'addNativeJarLibsJoglCfg(..)' to GlueGen, commit c0ead6fa10280f8076704726d59f482b183fd77e GL*, GLContext: Expose isGL2ES3() and getGL2ES3() for convenience. GLBuffers: Align comment GLPixelStorageModes: Fix API doc references, Add set[Pack|Unpack]RowLength(GL2ES3 gl, ..) GLReadBufferUtil.readPixels(..): Use plain int values for inWidth/inHeight, instead int[] - no return value desired. Gears: Make rotation optional Cleaned up TiledRenderer capable to be used w/ GL2ES3 and TiledRenderer2 to be used w/ GLAutoDrawable. Test scripts .. GLPixelBuffer*: Add componentCount==1 (ALPHA/RED), 'allowRowStride' utilization AWTGLPixelBuffer* -> GLPixelBuffer* PNGImage: Bounds check in getPixelRGBA8(..) and setPixelRGBA8(..) TileRenderer: Unify TileRenderer, add RandomTileRenderer (both utilizing GLPixelBuffer, and pre/post GLEventListener) TileRenderer*: Align impl. to common abstract superclass TileRendererBase (cleanup / API doc) TileRenderer*: Enhance API Doc; Cleanup OO; Remove PMVMatrixCallback, use GLEventListener reshape(..) or manual reshape after beginTile(..) method. TileRendererBase: Add toString(), Proper tile unit test names, i.e. add NEWT for UI agnostic (no-awt tests). TileRendererBase: Add interface TileRendererNotify, to notify implementing GLEventListener about attached/detached TileRenderer TileRendererBase: API-doc cleanup; Fix GLCanvas, WIP printing .. GLCanvas Printing WIP - Add TestTiledPrintingGearsAWT GLVBOArrayHandler: Remove unused imports Test scripts .. TestTiledPrintingGearsAWT: Fix margin translate for high dpi, i.e. other than 72dpi Add TestGLContextDrawableSwitch02AWT: Test AWT GLCanvas <-> GLOffscreenAutoDrawable switch, forth & back GLDrawableUtil.swapGLContextAndAllGLEventListener: Fix comment - Add remark about GLAnimatorControl's which association gets swapped as well. TileRenderer*: TileRenderer adds setTileOffset(..), getParam(pname) shall always return last result, no overloading of attachToAutoDrawable(..); Fix comments TileRendering / Gears: Clarify PMV math, if tiling use white background (-> print) GLCanvas Printing WIP: Swap to offscreen at setupPrint(); Use TileRenderer @ print(..); Test: Add auto-print w/o UI 72dpi and 300dpi TileRenderer*: Add more detailed 'toString()' - override for TileRenderer GLCanvas Printing WIP: Perform all print* operations on AWT-EDT, clip before drawing image and show same; Test: Add offscreen print and add borders. TestTiledPrintingGearsAWT: Perform AWT mods on AWT-EDT, always perform g.scale(..), pass 'offscreen' w/ manual printing as well Added AWTPrinting document .. Add AWTPrintLifecycle interface describing impl. w/ setupPrint()/releasePrint(), modularize unit test TestTiledPrintingGearsAWT GLCanvas Printing WIP: Add GLJPanel; GLCanvas TILE_SIZE 512; print(Graphics): Don't force on AWT-EDT -> Deadlock; releasePrint(): perform reshape/display! TestTiledPrintingGears*AWT: Add 4s delay before closing frame and ending unit test to wait for print-job (?) AWT/GL Printing WIP: Abstract AWT tile painting code out to AWTTilePainter, reused w/ GLCanvas and GLJPanel Complete commit 54dcdf1f53c9fc1f7124cf77bbf5aa952d42053a, exposing GL2ES3 in GLProfile (just a query, no new profile) Fix TileRenderer*: Allow general usage w/ any GL profile, only image-buffer requires >= GL2ES3; Always set pack-alignment, Set glReadBuffer(..) >= GL2ES3 TileRenderer*: Fix FBO MSAA use-case, i.e. call swapBuffers() before endTile(); Enhance unit tests for MSAA, also add TileRendererBase.TileRendererNotify to GearsES2 TiledPrintingAWTBase: Fix scaling - Fit frame to page, add MSAA RenderingHints test; setupPrint(Graphics2D): Query RenderingHints to use MSAA rendering Test: Don't resize frame, tweek print-matrix; AWTPrintLifecycle: Add scale and convenient AWT container traversal context; GLCanvas/GLJPanel properly handle existing MSAA and req. AA; doc/Implementation/AWTPrinting: Update to match latest code Aggregate and cleanup '.ps' and '.pdf' artifacts (printing tests) AWTPrintLifecycle: Add detailed API doc Fix some JavaDoc and API doc (reference) bugs .. doc/Implementation/AWTPrinting.txt: Adding ref to AWTPrintLifecycle TileRenderer*: Fix pre-swap and post-swap in regards to endTile(..), i.e. pre-swap only for FBO && MSAA. See TileRendererBase.reqPreSwapBuffers(..) API doc. TileRenderer*: API doc fixes Add AWTTilePainter.dumpHintsAndScale(..), removing more duplicated code from GLCanvas/GLJPanel build-*.xml: Unify 'javah' tasks where possible, i.e. per destination directory and classpath. This hopefully saves a few milliseconds in the build :) TiledPrintingAWTBase/doc: Add description of how-to add a 'print-to-file' printer driver on OSX NewtCanvasAWT: Implement AWTPrintLifecycle and hence support for AWT printing. AWTPrintLifecycle: Add DEFAULT_PRINT_TILE_SIZE (512); Remove unused imports. AWT Printing: AWTTilePainter needs to handle null clip! Gears*: Clarify frustum calculation for tiling TestTiledPrintingGearsSwingAWT: Add a second demo GLEventListener showing it's working/scaling well; Adding TileRendererBase.TileRendererNotify to RedAquareES2 having a 3rd demo case. RedSquareES2: Fix tiled aspect ratio Add 2nd 'demo' canvas to the other tiled printing tests. Gears, GearsES2, RedSquareES2: Proper debug output for init, reshape and dispose Fix TileRendererBase Bug: Avoid multiple GLEL init(..) call. Relocate FFMPEGNatives.initIDS0() -> FFMPEGStaticNatives.initIDS0(); Cleanup up warnings and includes (clang). Add support for clang ; Use __APPLE__ predefined macro Complete commit 4b866d2686ab9c3fd7cf6708925b4663ad81e359: Relocate FFMPEGNatives.initIDS0() -> FFMPEGStaticNatives.initIDS0(); Cleanup up warnings and includes (clang); Forgot to commit new ffmpeg_static.h AWTTilePainter: Fix null clip-rect (consider scaling); Fix non GL-oriented drawable, skip vertical flip and use 1:1 y-coord. TileRenderer: Add and expose clipped image size; Expose size of tiles. Fix AWT printing issues w/ overlapping and/or non-opaque contents ; Change AWTPrintLifecycle's lifecycle Updating doc AWTPrinting.txt Add 'DirectDataBufferInt' supporting NIO based BufferedImages TestTiledPrintingNIOImageSwingAWT: Add layered test ; Use 300dpi instead of 600dpi Print Tests: Split 'Printable' to own class, add OffscreenPrintable using NIO BufferedImage, adding OffscreenPrintable tests to all unit tests. AWT Printing: Move init-test of setupPrint(..) to AWT-EDT Runnable ; GLJPanel: Attempt to initialize if not done yet (similar to GLCanvas) Fix SharedResourceRunner's potential race-conditions. Use top-level synchronization simplifying code and better robustness. AWTTilePainter: Fix DEBUG message (used wrong value at println) RedSquareES1: Add TileRendererBase.TileRendererNotify AWTTilePainter: Fix case with no GLOrientation, i.e. no vertical-flip. Tile location and destination must follow same math as w/ vertical-flip. AWT Print Tests: Only include 600dpi tests if requested via main arg '-600dpi' AWTTilePainter.setupGraphics2DAndClipBounds(): Use 'Shape getClip()'; Use double precicion clip bounds 'all the way'; Explicitly scale image and clip w/ current scaled transform. Bump to JDK/JRE 7u40. TestTiledPrintingGearsSwingAWT: Enable 'bitmap' test only on Windows, issues w/ AMD catalyst driver and pixmap surface .. Fix Bug 835: Use target.[sourcelevel,targetlevel,rt.jar] for all javac tasks. Bug 839: Clarifying GLStateTracker.clearStates(..) remove 'enable' change - Part 1 Fix Bug 826: GLJPanel: Fully restore TextureState and Viewport AWT Printing: Fix non vertical-flipped printing, i.e. cut-off top-row's tile upper area, cleanup. Fix Bug 839: Clarify whether resetStates(..) shall clearStates() - Pass 'isInit' flag. Fix Bug 840: DefaultEDTUtil.restart() shall only reuse ThreadGroup (tg) is not destroyed, otherwise use current thread's tg. Bug 816: Add unit test 'TestBug816OSXCALayerPosAWT' TileRendererBase: Remove redundant reshape propagation of atached GLEL, call pre/post reshape in it's display method instead. Bug 816: Fix OSX CALayer 'quirks' for AWT 1.7.0_40 - See JAWTUtil JAWT_OSX_CALAYER_QUIRK_SIZE and JAWT_OSX_CALAYER_QUIRK_POSITION. OSXMisc.c: Fix compilation error w/ java6's jint definition (probably clang as well) Fix MovieCube/Simple Demo in 'Applet' mode: Use default ctor to completly initialize GLMediaPlayer demo w/ def. stream etc; Fix list of command keys in applet html page. DirectDataBufferInt: createBufferedImage(..) use BufferedImage type value instead of component-count, support all int types ; Add type 'BufferedImageInt' preserving the custom image-type, add note about TYPE_CUSTOM TileRenderer*: TileRendererNotify -> TileRendererListener w/ clarifying functionality (reshapeTile(..), ..); Only process GLEventListener impl. TileRendererListener; attachToAutoDrawable -> attachAutoDrawable, etc. Bug 816: Fix JAWTWindow's getLocationOnScreenNonBlocking(); Derive CALayer position from AWT component's location on screen. Track fixedFrame size of root CALayer; Add Split layout to unit test, add [manual] Applet tests. Test AWT Printing: Frame size contains border/insets, use as-is for scaling; Only force TEXT AA print-rendering hint. Fix Bug 816: JAWTWindow.getLocationOnScreenNonBlocking(..) shall use JRootPane for last position offset; AWTMisc.getInsets(..) add special JRootPane case. Test applets .. change font of misc test section. Bug 816: Clarify JAWT_OSX_CALAYER_QUIRK_* semantics, add JAWT_OSX_CALAYER_QUIRK_LAYOUT Fix AWT Printing: Use delegated GLDrawable's size for tile-size instead of AWT-GLAD's size, since the latter uses AWT's component size. TileRendererBase.GLEL.display(): Skip tile-rendering if TR is not yet setup. Sync issue w/ NEWT/AWT based GLAD AWT Printing: releasePrint() issue reshape from AWT-EDT; GLJPanel: Issue 'handleReshape' if panelSize/awtSize mismatch, otherwise 'sendReshape' and exception if offscreen size doesn't match panelSize. Fix TileRenderer regression of commit c8abb9d2c9a8c92f0c5c42aba13e3e80c69739dc: Test isSetup() _after_ running glEventListenerPre. GLJPanel: Remove forced DEBUG .. at handleReshape in releasePrint (added w/ commit fe284b515d984198fdbe702837809f181625a457) GLJPanel/Printing: Perform backend.reshape immediatly after printing if resized; Add unit test for resize while printing. test scripts/setenv-jogl.sh: Remove JogAmp *LD_LIBRARY_PATH components. GLJPanel/AWTGLPixelBuffer: Reused BufferedImage didn't account for row-stride (regression of b33bdf41cf53f37203643a8551bf5d94b42a8fab) Add notice about 'GL states' regarding GLSL vertical flip (Bug 842 and Bug 826). Bug 818 (OSX 10.6.8 NVIDIA GeForce GT 330M): Add unit test (manual applet) GLJPanel: Fix 7u40 access to property 'sun.java2d.opengl'. Property was trusted before .. Bug818GLJPanelApplet: Remove unused imports Bug 816: Add 2 more unit tests (Swing JFrame w/ 2 JRootPanes, AWT Frame BorderLayout w/ Checkbox North, GLCanvas Center) Bug 816 (OSX CALayer pos): Fix location on 'inner CALayer' calculation Bug 816 (OSX CALayer pos): Add detailed description (pseudo code) to JAWTUtil.JAWT_OSX_CALAYER_QUIRK_LAYOUT Bug 548: GLRendererQuirks.GLFlushBeforeRelease is needed on OSX < 10.7.3 w/ NV GPU [was comparing against 1.7.3 instead 10.7.3] ! Bug 818: Enable new quirk GLSLNonCompliant on OSX < 10.7 w/ NV GPU; GLJPanel: Don't use GLSL flip if quirk GLSLNonCompliant is present. AWTTilePainter: Avoid NPE if Graphic2D's AffineTransform is null, use identity tranform in such case. Bug 818: Add missing html file for applet unit test of commit 51ea4e5d5d212dfef519cf824d6cbf69e41bebc7 Bug 848: Add test applet ; Bug 816 Bug816AppletGLCanvas02: Remove 2nd Animator ; Fix intendation (TAB -> WS) artifact.properties: Add jogl.build.version:=jogamp.version Bug 816/848: Cleanup test applet layout/size ; Note Bug 848: Not reproducible after restart of OSX test machine! Bug 729: OSX CALayer shall honor the Component's visibility state test scripts (test Bug 729 w/ TestAWTCardLayoutAnimatorStartStopBug532) Bug816 OSX CALayer: getLocationOnScreenNonBlocking(..) stop traversing at top-level heavyweight Window, fixes [J]Dialog use case. Bug 729: OSX CALayer invisible needs to have opacity 0 to not show hidden component. Bug 789: glDrawArraysIndirect and glDrawElementsIndirect are using GL_DRAW_INDIRECT_BUFFER, add VBO variant and range-check Bug 729, Bug 849: Honor JAWTWindow's [parent] visibility state FFMPEGMediaPlayer: Use IOUtil.decodeFromURI(..) to unescape %20 NativeWindow/OSX: Fix RunOnThread/RunLater - Properly determine 'forkOnMain' via onMain && ( isOnMain || 0 < delay ) NEWT/Fullscreen (Bug 836): Exit re-parenting fullscreen w/ [invisible-exit-visible] (-> like reparent); Always force focus; X11: Always use ALWAYSONTOP. NEWT/OSX (Bug 836): Lifecycle operations performed on main-thread must be synchronized (wait-until-done) NEWT/OSX (Bug 836): Only WindowDriver.initWindow0(..) operation on main-thread must be synchronized (wait-until-done) NEWT Display: Issue EDTUtil.start() at runOnEDTIfAvail(..) even if on EDT, which is to be stopped. NEWT Reparent/Fullscreen: Fixes X11 unsuccessful return to parent window; Add reparentWindow(..) top-level position arguments; Misc NewtCanvasAWT Focus Traversal: Remove AWT's requestFocus*() overrides in favor of FocusPropertyChangeListener requestFocusNEWTChild() Bug816 OSX CALayer: Issue w/ JSplitPane within Apple (Firefox, Safari - not appletviewer) when move horizontal slider (vertical: ok) NEWT Reparent/Fullscreen: Add 'waitForPosition(..)' when reparenting or back from fullscreen; JOGLNewtAppletBase: Reparent to pos 32/32, trying to avoid browser window focus/top stealing on X11. Bug 852: Remove CPU sourced data API entry where not allowed (ES3 and GL core >= 3.0) ; GL2 cfg: Ignore GL2ES3 symbols (super) Bug 852: Validate CPU sourced data API is allowed, throw exception if not. GLContext: isCPUSourcedAvail() -> isCPUDataSourcingAvail() qun (2): Fix GLES3/GLES2 relation / Use bouml 4.21.1 (Note: SVG fonts .. are too tiny, using png) Use uml's png files (svg font is broken)