commit 9e87acd921bcb357f1ec88d166bde672b54b02c8 Author: Sven Gothel Date: Fri Aug 3 01:38:37 2012 +0300 Fix X11 Display Connection leak w/ new GLAutoDrawableBase code when used w/ offscreen drawables, reported by Mark Raynsford New common GLAutoDrawableBase missed to close the AbstractGraphicsDevice in case it has been created and dedicated for the passed GLDrawable. This detailed knowledge is only known to the creator, hence it is passed in the constructor and is being passed through all specializations. Further more the new X11/GLX impl. of GLDrawableFactory's 'createMutableSurfaceImpl' always creates it's own private X11 display connection to avoid locking / threading issues. Since the old implementation reused the shared display connection which is prone to threading issues, this bug was not visible before. Also fixed the unit test TestNEWTCloseX11DisplayBug565, now correctly validating that no display connection is left over after a new cycle of create/destroy of onscreen and offscreen drawables. commit 93ab5e38ed59d6df101886ac8a2207955b0cea7f Author: Sven Gothel Date: Wed Jul 25 04:25:32 2012 +0200 Add property: 'jogl.disable.opengles' to disable querying and using OpenGL ES This might be required by a few older buggy ES implementations. Also assists to discable ANGLE is not properly detected (?) on Windows 32bit - the latter causes SEGV within FF and Chrome. TODO: Fix ANGLE detection and usage within broser NOTE: ANGLE works fine standalone .. commit 7bb5885fc3a904f49e22f0c8cbf747d9b189a7ba Author: Sven Gothel Date: Wed Jul 25 04:23:35 2012 +0200 SWT Update: SWT GLCanvas creates lazy when resource is ready; Create new NewtCanvasSWT allowing to parent NEWT windows natively. SWT GLCanvas creates lazy when resource is ready - Ensures drawable and context are created when size > zero and native visualID is valid. The latter is platform dependent. - Note that you cannot utilize custom GLCapabilities w/ this one, since the configurations is already realized - use NewtCanvasSWT. Create new NewtCanvasSWT allowing to parent NEWT windows natively: - Similar to NewtCanvasAWT - Allows attaching / detaching NEWT windows NewtCanvasAWT: Public setNEWTChild(..) fixed Added test cases for the above - tested on Linux, OSX and Windows w/ SWT Note: As usual for OSX, add -XstartOnFirstThread Details: - NEWT Display has new method: 'EDTUtil setEDTUtil(EDTUtil)' allowing to set a custom event dispatch utility. We use this to set our SWTEDTUtil for using NEWT w/ SWT complying w/ SWT threading constraints. commit 00bef95008b02cc71e166da122884402e9381f44 Author: Sven Gothel Date: Tue Jul 24 00:14:02 2012 +0200 Fix GraphicsConfigurationFactory: Map factory to device-type _and_ capabilities-type; Add a pre-set nativeVisualID to chooseGraphicsConfiguration(..) Map factory to device-type _and_ capabilities-type: - Allows using different GraphicsConfigurationFactory implementations for different capabilities-types. Previous impl. failed to use an OpenGL agnostic CapabilitiesImmutable for 'chooseGraphicsConfiguration(..)' since only the GL aware factory was mapped. The latter failed since it expected a GLCapabilitiesImmutable. - The passed capabilities-type as well as device-type given at getFactory(..) is traversed top-to-down to find a most suitable factory: For-All devT := getTopDownDeviceTypes(deviceType) For-All capsT := getTopDownCapabilitiesTypes(capabilitiesType) f = factory.get(devT, capsT); if(f) { return f; } end end Add a pre-set nativeVisualID to chooseGraphicsConfiguration(..) - In situations where a native visualID is already chosen [by external means for example], but we still need to query a matching GraphicsConfiguration - we require to pass a non VisualIDHolder.VID_UNDEFINED nativeVisualID. We had a hack implemented before within some implementations and their static calls, however an agnostic mechanism is required to implement new NativeSurface/Window's platform agnostic. - X11GLXGraphicsConfigurationFactory: respect a pre-set xvisualID - X11GLXDrawableFactory.createProxySurfaceImpl(..) queries the given windowHandle's visualID and 'chooses' the configuration accordingly. If the visualID is undefined an exception is thrown, since window is invalid. These mechanics are implicit for Windows and OSX. Fix X11GLXGraphicsConfiguration.updateGraphicsConfiguration(): - Skip any action if a valid X11GLCapabilities is already chosen, i.e. w/ visualID. Otherwise choose a suitable configuration incl. visualID. The latter is quite impossible and invalid, since visualID must be defined at window creation time and the update method is issued with a valid window. X11 - Misc: - Added 'int jogamp.nativewindow.x11.X11Lib.GetVisualIDFromWindow(..)' - All returned visualID's are of type 'int' commit 90f2156e4c48386eb2ee06acc1169a7557851e88 Author: Sven Gothel Date: Sun Jul 22 04:18:26 2012 +0200 Adding TODO note: Optimize/Fix NIO caching of glMapBuffer/glUnmapBuffer commit 1d300e8d06916acd80039a6c4b198111ff1f66fb Author: Sven Gothel Date: Sun Jul 22 04:18:07 2012 +0200 Align TestSWTAccessor02GLn w/ TestSWTJOGLGLCanvas01GLn, dropping the canvas cstr on SWT thread, which seems not to be required. commit 4b5a0f6557d7152ec770bc13ad3c494449de0529 Author: Sven Gothel Date: Sun Jul 22 04:16:55 2012 +0200 Fix Bug 606 - New AWT threading implementation breaks .. ; Fix GLAutoDrawable multi-threading w/ proper pattern (hope so) Considering code changes and remarks: 3ed491213f8f7f05d7b9866b50d764370d8ff5f6 1a91ec5c8b6fd9d9db7bc115569c369fe7b38e9b 3334a924309a9361a448d69bc707d4cce416b430 4f27bcecf7484dc041551f52a5c49e2884cb3867 It seems necessary to have - recursive locking employed for all semantic actions which changes drawable & context (and the Window resource) - to avoid deadlock, we have to ensure the locked code segment will not spawn off to another thread, or a thread holds the lock, spawns of an action requiring the lock. .. sure - other read-only methods (flags, ..) shall at least utilize a safe local copy of a volatile field if further use to produce the result is necessary. - flags like sendReshape require to be volatile to guarantee it's being processed Patch impacts: AWT/SWT GLCanvas, GLAutoDrawableBase [and it's specializations] and hopefully closes any loopholes of missing a cache hit, etc. If you review this and find optimizations, i.e. removing a lock due to semantics etc, don't hold back and discuss it, please. commit adc9522ccaff74eb779d4d33905d76d52acb36bb Author: Sven Gothel Date: Fri Jul 20 22:16:54 2012 +0200 Fix TestSWTAccessor02GLn regression .. forgot to: canvas.addControlListener(swtUpstreamHook); commit e58e7739379147af8c7b875f6e8a7cdb40e342bc Author: Sven Gothel Date: Fri Jul 20 22:05:32 2012 +0200 Fix OSX OffscreenLayerSurface (OLS) regressions (pbuffer based) - Use pbuffer (still), don't set FBO (invisible) - OLS (only impl is JAWTWindow now) stores the attached layer handle created and attached by the GLContext implementation, so 'others' may detach it -> NewtCanvasAWT - NewtCanvasAWT.removeNotify() needs to ask the OLS to detach the layer since it's parent will be gone. - MacOSXCGLContext destroy allows a removed OLS (see above) commit fb7d2d8a188fe5da159571cfabfd1d6a8879d1da Author: Sven Gothel Date: Fri Jul 20 15:44:20 2012 +0200 tests.sh minor edit commit 72785ac35aa7c95bc675f3d773c6a7764b5b0ddc Author: Sven Gothel Date: Fri Jul 20 15:44:00 2012 +0200 Fix OSX regression of commit 20bf031db719f7baa4c6e74734fc999061e08fe2 - handling w/ non NSView handles (pbuffer) commit 06b6a74f4915a539f6025112a82e517d8e8cb7af Author: Sven Gothel Date: Fri Jul 20 14:48:52 2012 +0200 Fix TestFocus01SwingAWTRobot failure duer to RedSquareES2's setFullscreen() toggle mouse adapter :) Moved the fullscreen toggle mouse adapter to main test class. commit 209a5ac217b591991d520789313eb4f819da89d2 Author: Sven Gothel Date: Fri Jul 20 14:09:04 2012 +0200 Minor edits commit 4a08de4511a627c3d87d6a33debbd561962c0312 Author: Sven Gothel Date: Fri Jul 20 14:08:49 2012 +0200 GLCapabilities Native Aquisition: Set alpha bits at last - due to it's auto setting by setSampleBuffers(true) and setBackgroundOpaque(false) This bug lead to X11 GLCapabilities rgba: 8/8/8/1 - which ofc is invalid. Sideeffect was a bad selected GLXFB configuration and the GLContext couldn't be made current. Patch sets alpha bits reflecting reality carefully after opaque/samples. Added API doc note. commit 2da0d69fec6209c55832f5aae9d365e25d3aba6d Author: Sven Gothel Date: Fri Jul 20 12:46:35 2012 +0200 Fix NEWT exception handling in event dispatching: Catch and fwd to caller Exceptions caused by NEWTEvent processing (on it's EDT) were not propagated to the caller (diff thread). Hence the EDT were brought down and the caller may have waited forever (deadlock). Catch exception if caller waits and throw exception at waiting point. commit 20bf031db719f7baa4c6e74734fc999061e08fe2 Author: Sven Gothel Date: Thu Jul 19 21:15:10 2012 +0200 Bug 599 - FBObject / Offscreen Support - Part 1 - New FBObject implementation handling FBO and it's attachments *** API CHANGE: Util -> Core *** while it's size and sample-count can be reconfigured on the fly. - com.jogamp.opengl.util.FBObject -> com.jogamp.opengl.FBObject - agnostic to texture unit - separate attachments using OO hierarchy reflecting FBO - handling MSAA and blitting - no FBO destruction for reconfig (attach/detach) - New GLFBODrawableImpl impl. an FBObject based GLDrawable - Instantiated by a dummy native surface (onscreen and invisible) hooked up to a dummy GLDrawable, which is the delegation for context creation. - Utilizies ProxySurface.UpstreamSurfaceHook for dummy surface avoiding specialization for native platforms. - TODO: Allow to utilize common surface interface as a dummy-surface to supporting API seperation of windowing/GL. The latter allows impl. of createGLDrawable(NativeSurface) with FBO. - New OffscreenAutoDrawable (extends GLAutoDrawableDelegate) for all offscreen drawables. Shall replace GLPbuffer. - New GLCapabilities*.isFBO() / setFBO(boolean) to request FBO offscreen, similar to isPBuffer(). Rule: if both are requested, FBO shall be favored. - GLContext adds raw FBO availability query (min. FBO avail), FBObject contains fine grained queries (TODO: Move parts to GLContext for efficiency). - Add framebuffer tracking, allowing fast querying: - GLBase/GLContext: public int getBoundFramebuffer(int target); public int getDefaultDrawFramebuffer(); public int getDefaultReadFramebuffer(); - GLContextImpl public final void setBoundFramebuffer(int target, int framebufferName) .. called by GL impl bind framebuffer - GL: getDefaultDrawFramebuffer(), getDefaultReadFramebuffer() Adding default framebuffer queries being issued by GL.glBindFramebuffer(target, 0) w/ a default framebuffer, o.e. zero. This allows a transparent use of a custom FBO even in case the applications attempts to reset FBO to zero. Value flow: GL <- GLContext <- GLDrawable, - GLCapabilities handle fbo/pbuffer seperate, don't disable the other - GLContext/GL track read/write framebuffer to be queried by FBObject to determine whether to bind/unbind a framebuffer - Test cases for multiple FBO w/ and w/o MSAA Other Features: - New interface ProxySurface.UpstreamSurfaceHook, allowing to hook an upstream surface of unknown type providing lifecycle and information (size, ..) callbacks. Used for all new dummy NativeSurface impl and SWT GLCanvas. - GLContext -> GLDrawable propagation context/drawable lifecycle via ProxySurface.UpstreamSurfaceHook allowing dynamic resources to react (create, init, ..) - contextRealized() - contextMadeCurrent() - SurfaceChangeable -> MutableSurface currently only contains setting the surface handle. TODO: May need to move ProxySurface.UpstreamSurfaceHook -> MutableSurface.UpstreamSurfaceHook, allowing other impl. classes (NEWT OffscreenWindow) to utilize the new upstream hookup mechanism - will allow FBO/Dummy window to work. - SWT GLCanvas using ProxySurface.UpstreamSurfaceHook for proper size propagation. - New GLAutoDrawable::getUpstreamWidget(), allowing GLEventListener to fetch the owning Java side UI element (NEWT, SWT, AWT, ..). - GLDrawableFactory: Removed createOffscreenSurface() - unused and not GL related - EGLDrawableFactory handles device/profile avail. mapping while actually creating context/drawable. This allows us to learn whether the ES context is software/hardware as well as FBO avail. - EGLDrawable: Removed secret buckets of EGL configs :) Employ native surface (X11, WGL, ..) to EGL 'mapping' in EGLDrawableFactory utilizing new EGLUpstreamSurfaceHook (implements ProxySurface.UpstreamSurfaceHook). Other Bugs: - Add CTX_OPTION_DEBUG to ctx/extension cache key since only a debug ctx may expose the ARB debug capability. This bug caused lack of ARB/AMD debug functionality. - Fix GLProfile deadlock (debug mode, w/ EGL/ES, no X11), dump availability information _after_ lock. - ImmModeSink draw(): Use GL's glDrawElements(..), don't cast for GL2ES1. Fixes use for GL2ES2. - Fix KeyEvent.getKeyChar() comment (-> only stable for keyTyped(..)) Misc: - Refined alot of API doc - New GLExtensions holds commonly used GL extension strings, allows better referencing and usage lookup. - Move GL (interface) decl. to GLBase - GLBuffers: Cleanup API doc (format, types) - TextureIO: Add PAM and PPM static suffix identifier - GLCapabilities getNumSamples() returns 0 if sampleBuffers is disabled, this seems to be more natural. - finalized a lot commit 3988e3d7df9b80e9b7058f64758b34a5389f38b0 Author: Sven Gothel Date: Mon Jul 9 17:08:45 2012 +0200 GLCapabilities*: Add 'isFBO()' and 'setFBO(boolean)', allowing upcoming impl. to select offscreen FBO (GLDrawable, ..) commit 72a84b422327c6abb688339419d3552ec0e5c70c Author: Sven Gothel Date: Mon Jul 9 17:07:02 2012 +0200 EGLGraphicsDevice adds desctruction callback and nativeDisplayID; EGLDisplayUtil adds creation of EGLGraphicsDevice. Due to EGL's location in JOGL, supporting destruction of an EGLGraphicsDevice is solved (hack) temporary by passing an eglTerminate callback to it's ctor. Using EGLGraphicsDevice's close() method to also issue eglTerminate() simplifies the code. In future we shall move EGL to nativewindow! commit 4e70a4811a860255b53eeae7a841ca473e1aba86 Author: Sven Gothel Date: Fri Jul 6 09:06:03 2012 +0200 Fix commit dfee8c58d4915f78f57545c26a492668b2b68a87 commit dfee8c58d4915f78f57545c26a492668b2b68a87 Author: Sven Gothel Date: Fri Jul 6 08:57:57 2012 +0200 Fix SWT GLCanvas threading. Note: On OSX _only_ it's main thread is valid! commit 627a27581688e0b12300370c751e3823b1afe44b Author: Sven Gothel Date: Fri Jul 6 01:58:09 2012 +0200 C code: remove warnings commit 049eb333756f4f673411b43d47a993a5df9fc58d Author: Sven Gothel Date: Fri Jul 6 01:57:38 2012 +0200 test scripts windows: use new jogl-all.jar and jogl-test.jar commit e85e3ec2a73ac35aaf911f0b1e34b234be1622da Author: Sven Gothel Date: Fri Jul 6 01:20:48 2012 +0200 Enhance Bootsrapping of JOGL around 37% - 40% (1st start in new JVM) - GLProfile and GLContext* GLProfile: Enhance bootsrapping performance of loading GL*Impl class - Offthread classloading of all GL*Impl via reflection at startup reduces startup time here around 12% (800ms down to 700ms). GLContext*: Enhance bootsrapping performance of querying available GL profiles - Add PROFILE_ALIASING mode, defaults to true - can be disabled w/ property 'jogl.debug.GLContext.NoProfileAliasing' - PROFILE_ALIASING: If true (default), bootstrapping the available GL profiles will use the highest compatible GL context for each profile, hence skipping querying lower profiles if a compatible higher one is found. Linux x86_64 - Nvidia: 28%, 700ms down to 500ms Linux x86_64 - AMD : 40%, 1500ms down to 900ms - GL*Impl: - make fields final: glProfile, _context, buffer*Tracker and glStateTracker - allow null _context/glProfile in initialization (bootstrapping) - JoglVersion.getDefaultOpenGLInfo(..) - add arg: 'boolean withCapabilitiesInfo', allowing to suppres the list of caps commit b2e6ceed92da95130d0f37234c43712c7f9a98db Author: Sven Gothel Date: Thu Jul 5 14:57:54 2012 +0200 FIX JOGL's index.html - Reminder to myself: Always check web pages befor pushing them :) commit d5866a5d55f9445c7cedc1df03dc7958d6fd229e Author: Sven Gothel Date: Thu Jul 5 14:57:18 2012 +0200 GLContext adds FBO availability to profile mapping; Fix GL[Auto]Drawable/GLContext re-association (switch) incl. unit test. - GLContext adds FBO availability to profile mapping - GLContext added 'GLDrawable setGLDrawable(GLDrawable readWrite, boolean setWriteOnly)' allowing to set the write GLDrawable. This method enables switching context/drawable. Fix GL[Auto]Drawable/GLContext re-association (switch) incl. unit test Commit eed8508ae1132e5f45f788e9cb3f3d5a1050ac70 impl. of GLAutoDrawable's setContext(..) enabled proper setting of the GLAutoDrawable context incl. updating the context's drawables. Test covers: - remove/set (GLContext, GLEventListener) of GL[Auto]Drawable - switch (GLContext, GLEventListener) of 2 GLAutoDrawables commit a26d6e9361fb3287cba053aaf1a6318c853da95a Author: Sven Gothel Date: Thu Jul 5 14:32:48 2012 +0200 NEWT/KD Adapt to 'new' KD Window Creation API, use EGLConfig commit fd06292d4a208cbd613f4bdce7cae12e075e70ec Author: Sven Gothel Date: Thu Jul 5 14:32:00 2012 +0200 NativeWindow/Newt X11ErrorHandler enhancement / unification - don't throw exceptions. Handles also XAWT BadMatch X_SetInputFocus. X11ErrorHandler code now dumps proper information about the opcode and error message and the running Java thread. Having propery "nativewindow.debug.X11Util.XErrorStackDump" or "nativewindow.debug=all' set, a stack trace is dumped. Since the X11ErrorHandler may catch an XAWT error: BadMatch X_SetInputFocus, we cannot throw an exception and better keep running. commit 9b35c57425b0a5f6b789b9b43a62a8b64be51d86 Author: Sven Gothel Date: Wed Jul 4 18:02:11 2012 +0200 GLAutoDrawable* refinement of abstraction / generalization - API Change! - GLAutoDrawable (compat change - recompile): - 'void invoke(boolean wait, GLRunnable glRunnable)' -> 'boolean invoke(boolean wait, GLRunnable glRunnable)' Allows notifying caller whether the task has been executed or at least enqueued. - GLAutoDrawable add 'GLEventListener removeGLEventListener(int index)' - This allow one to remove a specific GLEventListener and reusing it (return value). - GLDrawableImpl remove 'destroy()' to favor 'setRealized(false)' - Using more common code of GLAutoDrawableBase, i.e. GLPbufferImpl can use defaultDestroyOp(). - Removes redundancy of methods - GLAutoDrawableBase/Delegate - better 'default' names to emphasize it's purpose, adding API doc - includes more generic functionality - defaultWindowDestroyNotify() - defaultDestroyOp() - TestGLAutoDrawableDelegateNEWT demonstrates a simple example w/ all window events handled. - Fix TestParenting01cSwingAWT's threading use (gl disturbance thread) commit eed8508ae1132e5f45f788e9cb3f3d5a1050ac70 Author: Sven Gothel Date: Mon Jul 2 19:42:52 2012 +0200 GLAutoDrawable: Refine API doc; Use new abstract impl. GLAutoDrawableBase (GLWindow, ..); Add new GLAutoDrawableDelegate. - Refine API doc - 'void setContext(GLContext)' -> 'GLContext setContext(GLContext)' - Add note to createContext(GLContext) override -Use new abstract impl. GLAutoDrawableBase, used by: - GLWindow - GLAutoDrawableDelegate - GLPbufferImpl - Add new GLAutoDrawableDelegate incl. unit test commit 08e3f9bff494a5366781328734e83ae0202696fa Author: Sven Gothel Date: Mon Jul 2 19:24:16 2012 +0200 Test case cleanup - Gears w/ 640x480 size and proper aspect ratio frustum - query type of drawable.getNativeSurface() instead of auto-drawable itself - RedSquareES2 allow setting no-rotation and aspect-ratio for frustum - TestInitConcurrentNEWT: Don't use vsync commit 5c83989b8bb8e8f9cbc25f09e6a6fe5847e6b94c Author: Sven Gothel Date: Sat Jun 30 15:44:55 2012 +0200 Fix Bug 597: XDisplayString(0) -> SIGSEGV; Handle n/a DISPLAY It works now as follows: Note: Remote connection tested using ssh to localhost or an actual remote machine. Test w/ proper X11 authentication, i.e. DISPLAY and xauth: > cd projects/JOGL/jogl-bugs/597-headless/ > echo $DISPLAY localhost:10.0 > xclock 'works' T1.1 OK> java plop jogamp.opengl.x11.glx.X11GLXDrawableFactory@f581593 T1.2 OK> java -Djava.awt.headless=true plop jogamp.opengl.x11.glx.X11GLXDrawableFactory@6f34a7d8 +++ Test _without_ proper X11 authentication, i.e. DISPLAY and xauth: > xclock No protocol specified No protocol specified Error: Can't open display: :0.0 T2.1 OK> java plop No protocol specified No protocol specified Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. (Stack trace from: GLProfile.initProfilesForDefaultDevices(..) -> NativeWindowFactory.initSingleton(..) -> JAWTUtil.-> sun.awt.X11.XToolkit. -> sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) T2.2 OK> java -Djava.awt.headless=true plop No protocol specified No protocol specified ... jogamp.opengl.x11.glx.X11GLXDrawableFactory@394a8cd1 commit 9a7c8896fe38ebcd42ed5238b09a7a36d46db9dc Author: Sven Gothel Date: Sat Jun 30 05:14:34 2012 +0200 Fix Bug #589 (JAWT Offscreen-Layer resize) and Offscreen-Layer setSwapInterval() deadlock; Reuse JAWT instance; Cleanup - Fixes - OSXUtil.CreateCALayer*(..): Pass layer target size (if known). This fixes Bug #589 - MacOSXWindowSystemInterface-pbuffer.m: - ALL: displayLink NULL check - setSwapInterval(..): lock only for variable setting, could deadlock when start/stop CVDisplayLink - JAWTWindow.destroy(): use 'surfaceLock' instead of 'synchronized' - Cleanup / Performance - JAWTWindow.lockSurface(): Reuse JAWT instance - MacOSXJAWTWindow: AttachJAWTSurfaceLayer0(..) -> SetJAWTRootSurfaceLayer0(..) Reflects semantic better. - DEBUG - JAWTWindow.updateBounds(..) notify of bounds change commit c50fca1b5df9ec3b76fada4dd5dd307bdece531a Author: Sven Gothel Date: Sat Jun 30 03:39:33 2012 +0200 JAWTUtil/MacOSXWindowSystemInterface-pbuffer: Cleanup / More DEBUG info JAWTUtil.getJAWT(..): - better local var names - one time init - add DEBUG trace JAWTUtil.: - add offscreenLayer info MacOSXWindowSystemInterface-pbuffer.m: - remove warning: access of protected vars from outside class - better local var names - more DEBUG info (pbuffer texture) commit 0d7c3ed619044723cf561df424eac9992e5281c7 Author: Sven Gothel Date: Fri Jun 29 04:15:21 2012 +0200 GLContextImpl/GLDrawableImpl: More fail-safe, cleanup, mark some methods final GLContextImpl: Cleanup - release(): simplify the conditions - destroy(): allow locked twice before (destroy case) GLDrawableImpl: - fail safe: swapBuffers - final methods: getFactoryImpl, toHexString, getGLProfile, getRequestedGLCapabilities, getFactory, isRealized, lockSurface, unlockSurface commit d10c7916a2444b6cb1cf45be3ccb3d6e91a2f1b4 Author: Sven Gothel Date: Fri Jun 29 04:09:48 2012 +0200 NativeSurface.unlockSurface(): Change fail-fast policy to fail safe tolerant - This policy allows more simple destruction handling w/o validating on the top level. - Hence 'unlockSurface()' shall not throw any exception. - 'lockSurface()' keeps unchanges, clarified w/ explicit 'throws' declaration, ie will fail-fast. commit 89b09958ef1ad9cdc228517d2acaa0dc27aa559f Author: Sven Gothel Date: Fri Jun 29 03:59:22 2012 +0200 Minor cleanup commit c03ad260aea0b4a640a5eeb50a206688c531b591 Author: Sven Gothel Date: Thu Jun 28 21:59:00 2012 +0200 Bug #589 - Enhance snapshot/textIO test: Add offscreen mode; Add AWT onscreen/offscreen-layer resize test. commit 4f27bcecf7484dc041551f52a5c49e2884cb3867 Author: Sven Gothel Date: Thu Jun 28 21:46:10 2012 +0200 AWT/SWT GLCanvas: Remove volatile of context instance, use drawable instance's volatile 'feature' commit 3334a924309a9361a448d69bc707d4cce416b430 Author: Sven Gothel Date: Thu Jun 28 21:39:37 2012 +0200 NEWT GLWindow multithreading fix and annotations (see commit bc7503c77892a9e14b10e8b8e9ce48b148c6fa4c). NEWT GLWindow multithreading fix: - Add required locking of display(), otherwise a drawable/context destruction of another threads could lead to [still] use asynced data. commit bc7503c77892a9e14b10e8b8e9ce48b148c6fa4c Author: Sven Gothel Date: Thu Jun 28 21:32:48 2012 +0200 SWT/AWT GLCanvas multithreading annotations (see commit 1a91ec5c8b6fd9d9db7bc115569c369fe7b38e9b) ; AWT GLCanvas remove dead code. commit 1a91ec5c8b6fd9d9db7bc115569c369fe7b38e9b Author: Sven Gothel Date: Thu Jun 28 21:22:30 2012 +0200 SWT GLCanvas: Fix destroy(), Remove local concurrency hack & out-of-process locking ; Revise threading code; Proper name for SWT unit tests. SWT GLCanvas: - Fix destroy() drawable.setRealized(false); is being called within dispose() method - Remove local concurrency hack [MT-0] The hack: 'final GLContext ctx = getContext(); a = null != ctx ? ctx.something() : 0;' is thread safe locally, however, w/o covering the hole use case of the caller it makes no sense to add thread safe code here - would be only an illusion. In case any of the methods are called outside of a locked state extra care should be added. Maybe we shall expose locking facilities to the user. However, since the user shall stick to the GLEventListener model while utilizing GLAutoDrawable implementations, she is safe due to the implicit locked state. - Removing out-of-process locking [MT-1] Claiming the recursive lock in the dispose/display/.. methods and _then_ issuing a complex off-thread GL task could lead to deadlock. The GL task could involve calling GLEventListener methods, which itself could try to manipulate the GLCanvas -> deadlock. Similar to [MT-0] we may need to either find a proper locking mechanism or simply ignore it and reduce functionality. TBH .. the number of scenarious of the mentioned deadlock are very limited and exotic. - Revise threading code [MT-2] Besides the other MT-* remarks, the logic whether to spawn off the GL task and determination which thread to use is too complex and redundant. (See isRenderThread(), runInGLThread() and runInDesignatedGLThread()) - Proper name for SWT unit tests. Reflect the semantics. commit 53ff91470b73f2f12f0d1cf5cf800a13e46e026e Author: Sven Gothel Date: Thu Jun 28 20:56:25 2012 +0200 GLContext* TRACE_SWITCH: Add GLContext instance hash value to allow tracking. commit bd92af2b6b0ae2d1b1f22c64dcb0ffd0e94fae84 Author: Sven Gothel Date: Thu Jun 28 18:37:55 2012 +0200 GLDrawable* cleanup: Add @Override, remove trailing whitespace, .. commit 914b522af26b6d779dc931bf4303be3c7e898eff Author: Sven Gothel Date: Wed Jun 27 06:16:09 2012 +0200 Capabilities cleanup: make most get*() final, impl. Comparable to CapabilitiesImmutable, Misc .. - Comparable to CapabilitiesImmutable: "interface CapabilitiesImmutable extends VisualIDHolder, WriteCloneable" -> "interface CapabilitiesImmutable extends VisualIDHolder, WriteCloneable, Comparable" - CapabilitiesImmutable and GLCapabilitiesImmutable get-methods final (most) - GLCapabilitiesImmutable.compareTo: add doubleBuffered (between stereo and samples) Misc: - Add @Override - remove trailing whitespace, commit 4e2fb5389d22f2b16c1678843d4e31dd948c7902 Author: Sven Gothel Date: Wed Jun 27 05:40:32 2012 +0200 Misc cleanup: Add @Override, remove trailing whitespace commit 1d9ce79f9e396599b2503f385c74bd132bf88fed Author: Sven Gothel Date: Wed Jun 27 05:24:56 2012 +0200 Misc cleanup: Add @Override, remove trailing whitespace commit 6bff43023b630d7e9f413e39821ebf89c40a399a Author: Sven Gothel Date: Wed Jun 27 05:06:07 2012 +0200 Misc cleanup: add @Override commit a06e40cce89615eb8c4b080842997c9c3ad1130b Author: Sven Gothel Date: Wed Jun 27 05:05:36 2012 +0200 NativeSurface Cleanup (API Change) - Adapt to GlueGen Lock cleanup commit: 834b9e530e652b7ff7c5e222720bce3ad2b11c5f - adapt to GlueGen Lock cleanup - remove isSurfaceLocked(), use 'null != getSurfaceLockOwner()' instead Misc: - remove unused priv./impl. methods - add @Override commit 4a0a5d69ffcb7592b092991ddb3761653c389ce6 Author: Sven Gothel Date: Wed Jun 27 02:49:18 2012 +0200 NEWT WindowImpl.runOnEDTIfAvail(..): Run task from current thread if owning the windowLock. Avoiding deadlock when cmds issued from within locked code path. This allows e.g. GLEventListener::display(..) { .. glWindow.setSize(100, 100); .. } commit 70d9ac4ac866a21a2dbcc3f779ef2b3f81a7e29d Author: Sven Gothel Date: Tue Jun 26 23:47:29 2012 +0200 Fix commit a393e45613d87101dbb13763df263c2f9291d2d0: jogl's cg native lib is jogl_cg (jar packaging) commit e51542375c4f736c396fd5a38288dd5129a09268 Author: Sven Gothel Date: Tue Jun 26 12:36:58 2012 +0200 Complete Bug #598 - Commit a393e45613d87101dbb13763df263c2f9291d2d0 commit a393e45613d87101dbb13763df263c2f9291d2d0 Author: Sven Gothel Date: Tue Jun 26 10:44:08 2012 +0200 Implement Bug #598 - JOGL ALL JAR File Change incl. it's Native Jar URL Derivation - Depends on GlueGen commit 9a71703904ebfec343fb2c7266343d37a2e4c3db JAR file name changes: ALL JARs: - jogl.all.jar -> jogl-all.jar - jogl.all-noawt.jar -> jogl-all-noawt.jar - jogl.all-mobile.jar -> jogl-all-mobile.jar - jogl.all-android.jar -> jogl-all-android.jar - jogl.all-android.apk -> jogl-all-android.apk Atomic JARs: - nativewindow.core.jar -> nativewindow-core.jar - nativewindow.awt.jar -> nativewindow-awt.jar - nativewindow.os.x11.jar -> nativewindow-os-x11.jar - nativewindow.os.win.jar -> nativewindow-os-win.jar - nativewindow.os.macosx.jar -> nativewindow-os-osx.jar - jogl.core.jar -> jogl-core.jar - jogl.sdk.jar -> jogl-sdk.jar - jogl.glmobile.jar -> jogl-glmobile.jar - jogl.glmobile.dbg.jar -> jogl-glmobile-dbg.jar - jogl.util.jar -> jogl-util.jar - jogl.glutess.jar -> jogl-glutess.jar - jogl.glumipmap.jar -> jogl-glumipmap.jar - jogl.util.fixedfuncemu.jar -> jogl-util-fixedfuncemu.jar - jogl.awt.jar -> jogl-awt.jar - jogl.swt.jar -> jogl-swt.jar - jogl.util.awt.jar -> jogl-util-awt.jar - jogl.os.x11.jar -> jogl-os-x11.jar - jogl.os.win.jar -> jogl-os-win.jar - jogl.os.osx.jar -> jogl-os-osx.jar - jogl.os.android.jar -> jogl-os-android.jar - jogl.gldesktop.jar -> jogl-gldesktop.jar - jogl.gldesktop.dbg.jar -> jogl-gldesktop-dbg.jar - jogl.glugldesktop.jar -> jogl-glu-gldesktop.jar - jogl.util.gldesktop.jar -> jogl-util-gldesktop.jar - jogl.omx.jar -> jogl-omx.jar - jogl.cg.jar -> jogl-cg.jar - newt.core.jar -> newt-core.jar - newt.ogl.jar -> newt-ogl.jar - newt.awt.jar -> newt-awt.jar - newt.event.jar -> newt-event.jar - newt.driver.x11.jar -> newt-driver-x11.jar - newt.driver.win.jar -> newt-driver-win.jar - newt.driver.macosx.jar -> newt-driver-osx.jar - newt.driver.android.jar -> newt-driver-android.jar - newt.driver.kd.jar -> newt-driver-kd.jar - newt.driver.intelgdl.jar -> newt-driver-intelgdl.jar - newt.driver.broadcomegl.jar -> newt-driver-broadcomegl.jar Test JARs: - jogl.test.jar -> jogl-test.jar - jogl.test-android.jar -> jogl-test-android.jar - jogl.test-android.apk -> jogl-test-android.apk commit a1e299b0c376c0ac726125d929bab2f68fe667d1 Author: Sven Gothel Date: Mon Jun 25 22:09:11 2012 +0200 test script commit 7a6e924be7190685650d87c680635d7fe53963fd Author: Sven Gothel Date: Mon Jun 25 22:09:00 2012 +0200 Fix path derivation of J2RE_HOME and JAVA_HOME commit 2223a3242211e03bacfcb337d3f4e0e50533fb0e Author: Sven Gothel Date: Mon Jun 25 08:57:42 2012 +0200 Add screenshot AWT version: TestGLReadBufferUtilTextureIOWrite01AWT commit 741bc48237fb1735bab09843ebf09feba200bd81 Author: Sven Gothel Date: Mon Jun 25 06:41:57 2012 +0200 Tests [Multisample, Offscreen, ..]: Add Snapshots and store them in current directory instead of tempdir, so they get archived (CI/jenkins). Multisample/TestGLReadBufferUtilTextureIOWrite01NEWT: Add offscreen test commit 1c05c85e1ccc480da227cd6aa4718efd386e1e35 Author: Sven Gothel Date: Thu Jun 21 20:14:46 2012 +0200 JOGL CapabilitiesChooser-API and impl.: Cleanup using generics: 'List l' -> 'List l' commit 533e072a592826df53b90491bcaa606dfddaf646 Author: Sven Gothel Date: Thu Jun 21 19:43:59 2012 +0200 NEWT: Add virtual on-screen keyboard visibility interface methods incl. Android implementation. Note: Currently only w/ Android implementation. Note: On Android there is no way to reliably be notified of the current keyboard state. It would be best, if your code does not rely on this information Window adds: - setKeyboardVisible(boolean) - isKeyboardVisible() // unreliable on Android