aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* GLContext*: Remove '[set/is]Synchronized(..)' - Defaults to wait for locks: ↵Sven Gothel2012-05-1311-91/+49
| | | | | | | | | | | | | | | | | | | | | | | | 1. Drawable, 2. GLContext Remove deadlock situation where thread-1 (Animator Thread) holds the GLContext-Lock and acquires the Surface-Lock, while thread-2 (UI/Main/EDT) holds the Surface-Lock and attempts to create the GLContext and hence acquires the GLContext-Lock. A GLContext-Lock and hence makeing the GLContext current requires to hold the Surface-Lock. The prev. code acquired the locks in reverse order and allowed the deadlock as described above. This fix acquires the locks in the proper natural order 1 - Surface-Lock 2 - GLContext-Lock This fix also renders the use of the non-synchronized behavior invalid, since it is bogus not to wait for the GLContext lock where it waits for the Surface lock. It also seems nonsense not to wait for any of both locks and our code always waited for both (synchronized := true). The GLContext [set/is]Synchronized(..) methods are removed and waiting for the lock per default is the correct behavior.
* GLContext/Surface Deadlock: Add unit test, provoking deadlock w/ 2 threads, ↵glctx_deadlockSven Gothel2012-05-131-0/+218
| | | | one holding the surfaceLock acquiring ctxLock where ctx acquires the surfaceLock
* Add unit tests for gluUnProject fix (commit ↵Sven Gothel2012-05-121-5/+50
| | | | cbc77718f01a8190e1a8aa0e9afdc2a3a3403358)
* Fix regression of commit de2b129a56335262a44a05541a3ab2e35668cc6e: ↵Sven Gothel2012-05-113-40/+158
| | | | | | | | | | | | | | | ProjectFloat Matrix Multiplication of gluUnProject(..) impl. ProjectFloat's previous gluMultMatricesf(..) used row-major order, but the replacement multMatrixf(..) uses column-major order (like OpenGL, ..). Note: The replaced 'gluMultMatrixVecf' by multMatrixVecf() already used column-major order. Fix: Reverse the arguments of matrix multiplication m1 x m2 -> m2 x m1 Added proper API documentation in FloatUtil -> Column Major Order of Linear Matrix Layout
* LauncherUtil: Allow no query in URI and no PKG in query (Align w/ GlueGen ↵Sven Gothel2012-05-041-4/+1
| | | | commit a058e0a2f465a9bff3e32727edb55592f55c7b38)
* Android: Fix JOGL's (NEWT) Version activity: Use Launcher, show GL versionSven Gothel2012-05-042-10/+76
|
* Adapt to GlueGen commit cc76889a6fe96cffb91c9a3aa7934878c0ecd97e: Use ↵Sven Gothel2012-05-043-3/+3
| | | | ClassLoader to find JNI native libraries
* Minor cleanup ..Sven Gothel2012-05-042-6/+3
|
* NEWT: Cleanup Broadcom/KD driver imports, add Jogamp (c)Sven Gothel2012-05-026-17/+35
|
* NewtFactory: Show failure in getCustomClass(..) - require both, packagename ↵Sven Gothel2012-05-021-3/+8
| | | | and classname
* NEWT/OSX: Fix occasional crash 'free of non allocated object' - change ↵v2.0-rc8Sven Gothel2012-05-021-8/+17
| | | | window order on main-thread.
* Test MovieCube: Allow recreation - Video is still not visible after ↵Sven Gothel2012-05-021-6/+9
| | | | recreation (detach window) on OSX (FF, Safari)
* NEWT API Change 'WindowClosingProtocol': Use 'enum WindowClosingMode' ↵Sven Gothel2012-05-0213-78/+79
| | | | instead of static final int values.
* Complete commit c9faebb8f8f6be4c0de4919a516b4692742bc13c: Use 'enum ↵Sven Gothel2012-05-021-6/+6
| | | | ReparentOperation' in test.
* NEWT: Revert static/locked action instances due to possible deadlocks; class ↵Sven Gothel2012-05-023-176/+148
| | | | | | | | | | | | | | | Window.ReparentAction -> enum Window.ReparentOperation Revert static/locked action instances due to possible deadlocks - reverts commit: be59d561fd6ab8aa659e85cd962d38fffd1acb0a (partially) - reverts commit: 5742b1faa210401470032ef129e56a83c47fd046 Even thought the idea of having no temp. objects is nice to have, using a static instance requires locking which introduces a deadlock in case the action is being issued from diff. threads. class Window.ReparentAction -> enum Window.ReparentOperation (Minor API Change) Clarifies reparent operations using enums
* JOGLNewtAppletBase: Minor cleanupSven Gothel2012-05-011-2/+0
|
* Fix Bug 560 and NEWT window closing behavior in general for all platforms.Sven Gothel2012-05-0114-42/+139
| | | | | | | | | | | | | | | | | | | | | | - NEWT/WindowImpl: - 'void windowDestroyNotify()' -> 'boolean windowDestroyNotify(boolean force)', allowing to signal a forced close, as well as replying whether the window has been closed. (called by native code) - destroy(): set states before releasing the window lock - NEWT/X11: Pass windowDeleteAtom for reconfigure window, in case of reparenting child to top-level - NEWT/OSX: - Add 'BOOL windowShouldClose()' impl., ie. having a chance to reject the close attempt - Common impl. for 'windowShouldClose' and 'windowWillClose' -> 'windowClosingImpl' utilizing new 'windowDestroyNotify' code (see above). Fixes bug 560. - NEWT/JOGLNewtApplet1Run: Refine out-of browser window behavior for window-close button - default: move NEWT window back to browser parent - closeable: close NEWT window - jogl-test-applets: Add NApplet-Closeable test (Applet out-of browser window is closable)
* NEWT/WindowImpl: Make all 'action' class instances final; Action's init() ↵Sven Gothel2012-05-011-110/+101
| | | | determines whether it shall be executed.
* GLProfile/EGLDrawableFactory: Detect ANGLE (Windows D3D ES2 Emulation) and ↵Sven Gothel2012-05-012-22/+71
| | | | | | | | | | | | | disable support per default. We have to disable support for ANGLE, the D3D ES2 emulation on Windows provided w/ Firefox and Chrome. When run in the mentioned browsers, the eglInitialize(..) implementation crashes. This behavior can be overridden by explicitly enabling ANGLE on Windows by setting the property 'jogl.enable.ANGLE'. EGLDrawableFactory: - destroy(): clear references and unregister factory, maybe triggered by GLProfile (ANGLE case) - getAvailableCapabilitiesImpl(): return empty list in case EGL/ES is n/a (ANGLE case)
* EGLGraphicsConfigurationFactory: Add 'unregisterFactory()' static entry ↵Sven Gothel2012-05-012-5/+29
| | | | allowing to remove EGL/ES based factory
* Bug 556: Newt Mouse Synthetic Drag Event: Clear state if mouse enters/leaves ↵Sven Gothel2012-04-271-7/+14
| | | | | | | | | | | | | window. Since we cannot guarantee to have the pressed button information when receiving the mouse move event, we synthesize the dragged event (move while mouse button pressed). To simplify the situation and have a compromise, we clear the mouse pressed states when mouse enters or leaves the window to remove the dragged events at re-entering. This seems more sensible, since dragging after re-entering the mouse shall not be expected.
* Bug 570: NEWT General/X11: Decouple setFullscreen() and setAlwaysOnTop(); ↵Sven Gothel2012-04-272-35/+60
| | | | | | | | | | | | | | Use window-static instances for runnable actions NEWT General/X11: Decouple setFullscreen() and setAlwaysOnTop() - X11 fullscreen/above: Don't assume 'always-on-top' if switch to fullscreen. - WindowImpl: Remove relation between 'always-on-top' and fullscreen when quering and switching. Use window-static instances for runnable actions - Removes temp objects for EDT runnables - Uses synchronization on action instance to avoid concurrency
* TestGearsES2NEWT: fullscreen/above toggle print fullscreen/above state alwaysSven Gothel2012-04-271-4/+4
|
* Fix Bug 571: X11 behavior, where the PRESSED button is not included in the ↵Sven Gothel2012-04-271-1/+4
| | | | native mask.
* NEWT Input- Mouse-Event: Consitency of mouse button number; Add button -> ↵Sven Gothel2012-04-272-19/+36
| | | | button-mask func.
* Bug 577: Disable debug message XInitThreads() called (only enabled in native ↵Sven Gothel2012-04-261-2/+2
| | | | debug mode).
* UITest, fix exception message: Add 'not'.v2.0-rc7Sven Gothel2012-04-251-1/+1
|
* Newt/AWT Event Factory: Add Mouse Wheel Event ConversionSven Gothel2012-04-243-3/+17
| | | | .. also reverse AWT rotation sign, since NEWT uses the reverse oriantation.
* Test (Applets): Add MovieCube to jogl-test-applets page.Sven Gothel2012-04-241-1/+6
|
* Completing swap-interval implementation for OSX's CALayer usage. Closing Bug 555Sven Gothel2012-04-227-59/+150
| | | | | | | | | | | | - Based on Andres Colubri's initiative and commit 218d67fc0222d7709b21c45792d44501351939c4. - Reading real screen refresh rate ('stolen' from NEWT) - Properly handling swap-interval and vsync-to in native code - Increasing accuracy vsync-to to microseconds Tested manually w/ TestGearsES2AWT.
* Recognize swap-interval in NSOpenGLLayer modeAndres Colubri2012-04-221-2/+12
|
* FFMPEGDynamicLibraryBundleInfo: Adding notes ..Sven Gothel2012-04-211-0/+5
|
* Test: Added commented-out hacks for gdb invocation, OSX NSZombieEnabled env, ↵Sven Gothel2012-04-211-4/+17
| | | | and custom lib path; MovieCube: '-wait' to wait for debugger.
* FFMPEGMediaPlayer: Fix NPE; Add remarks about binary incompatibility in ↵Sven Gothel2012-04-212-156/+207
| | | | | | | | | | | upcoming version (master branch) We need native structure access methods to deal with API changes in the libav headers, which break binary compatibility! Currently we are binary compatible w/ [0.6 ?, ] 0.7 and 0.8 but not w/ trunk. Tested: Linux, Windows and OSX (self compiled binary)
* Newt/OSX(native): close0() shall not release NewtMacWindow (NSWindow) in ↵Sven Gothel2012-04-213-20/+53
| | | | | | | | case it's already in destruction (destroyNotifySend via windowWillClose()) This fixes the double release crash of the NSWindow, at the end of an application. Tested on OSX 10.6.8 and 10.7.3.
* NEWT/MainThread: Wait for new non daemon threads after 'main' class has ↵Sven Gothel2012-04-211-24/+102
| | | | finished, mimics proper Java behavior.
* Core/Animator: Force animator thread to be non-daemon.Sven Gothel2012-04-211-0/+5
| | | | | Even thought we didn't set the thread to be a daemon, if the [parent] thread instantiating the Animator the attribute would be passed along.
* FFmpeg Dyn. Symbol Validation: Proper check for alternative symbols where ↵Sven Gothel2012-04-211-25/+63
| | | | one of a set must be available.
* NEWT/Android: Fix requestFocus() - run impl. on UI thread.Sven Gothel2012-04-181-3/+7
|
* GLMediaPlayer: Add Class / Package API doc incl. detailed info in the ↵Sven Gothel2012-04-186-5/+122
| | | | implementations.
* Adding initial Libav/FFMpeg GLMediaPlayer implementationSven Gothel2012-04-163-1/+789
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Java classes already slipped through in commit 10935e1ec0d8ed677bc3fddfaa8cd73898a3bcbf - oops. Since we cannot provide a Libav binary (even though Google does in Android and Chrome) due to legal uncertainities .. we dynamically link to an existing Libav / FFmpeg library in a 'relaxed' manner. Ie. we allow certain recent functions to be absent to be able to run on a wider range of Libav versions. Currently tested on Debian Linux and Windows7 64bit/32bit Binaries for Win/OSX: - Windows http://ffmpeg.zeranoe.com/builds/ - OSX http://www.ffmpegx.com/ Features: - Dynamic relaxed linking to Libav (see above) - YUV420P texture lookup function shader stub (conversion to RGB) - 1-copy only (decoder buffer to texture) - simple - uses libavformat's network streaming - fixes some odd PTS values TODO: - Audio output (Should use OpenAL, duh) - Seek works poorly - Offthread multi-texture fetching for smoother animation - Maybe more pixelformat conversions
* TextureSequence Shader Support; GLMediaPlayer uses 'int' where possible; ↵Sven Gothel2012-04-1625-452/+940
| | | | | | | | | | | | | General enhancments. For details about TextureSequence/GLMediaPlayer shader collaboration w/ your own shader source, see TextureSequence and TexCubeES2 / MovieSimple demo. TextureSequence allows implementations to provide their own texture lookup function which may provide color space conversion (YUV) .. or other runtime hw-accel features. Have a look at the next commit, which provides an Libav/FFMpeg implementation w/ YUV/RGB shader conversion. MovieCube adds keyboard control (Android: firm touch on display to launch keyboard, don't break it though :)
* NEWT/Android: Add (soft) keyboard input. Complete the Android -> NEWT key ↵Sven Gothel2012-04-164-81/+126
| | | | | | | | | | | | | | | | | | | | | | translation. Minor fixes for mouse as well. - AndroidNewtEventFactory - Android -> NEWT KeyCodes, leave out control keys like HOME, BACK, .. TBD .. - We don't consume the key event, in case we cannot map it, so the Android OS has a chance to handle the control keys. - Key-Release generates a Key Typed event. - Key/Mouse translate Android time-base (upTime) to Unix. - AndroidWindow - set our onKeyListener, using above tranlator - setFocusable(true) and setFocusableInTouchMode(true) on our SurfaceView, otherwise no key event will be delivered. Note: 'requestFocus()' must also be called on the view for key input! - Test: NEWTGearsES2Activity, which launches the soft key via: InputMethodManager mgr = (InputMethodManager) win.getAndroidView().getContext().getSystemService(Context.INPUT_METHOD_SERVICE); mgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); // shows keyboard .. and requests the focus of the view for input.
* NEWT WindowImpl: Ensure screenChange suspense animation, even w/o having the ↵Sven Gothel2012-04-161-0/+4
| | | | | | | notify method being called. This happens on android, where we just react on an already happened screen rotate. W/o animation suspend GL rendering could be disturbed or the thread could starve.
* ShaderCode: Adding 'replaceInShaderSource a -> b utility functionSven Gothel2012-04-161-1/+55
|
* Add native tests for libav/ffmpeg and gstSven Gothel2012-04-1610-0/+1819
|
* API Change ShaderCode/ShaderUtil: Enable optional mutable shader source / ↵Sven Gothel2012-04-1612-128/+279
| | | | | | | | | | | | | | | | | | | | | | generalize shader source storage type to CharSequence[] Benefits: - Allows code injection and general shader source editing (before compilation) - Uses mutable StringBuilder only if editing is intended, hence reduces memory footprint and String conversion at compilation in such case. - ShaderCode.create(..) factory methods add nw attribute 'mutableStringBuilder' if true method returns a mutable StringBuilder instance which can be edited later on at the costs of a String conversion when passing to 'glShaderSource(int, int, String[], IntBuffer)'. If <code>false</code> method returns an immutable <code>String</code> instance, which can be passed to {@link GL2ES2#glShaderSource(int, int, String[], IntBuffer)} at no additional costs. - New 'edit' methods in ShaderCode: ' - int insertShaderSource(int shaderIdx, String tag, int fromIndex, CharSequence data); - int insertShaderSource(int shaderIdx, int position, CharSequence data);
* TexSequence/Movie Demo's Shader: Remove profile specific 'header' files, ↵Sven Gothel2012-04-167-42/+7
| | | | prepare for shader code injection.
* StringBuffer -> StringBuilder (Local objects, no concurrency) ; Impacts: ↵Sven Gothel2012-04-1660-101/+99
| | | | Capabilities/GLContext API 'toString(StringBuilder)'
* JOGL/Native: Add JNIEnv functionsSven Gothel2012-04-122-0/+94
|