summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'hharrison/master'Sven Gothel2013-04-1122-0/+0
|\
| * jogl: remove executable bit from some java files and a pngHarvey Harrison2013-04-0922-0/+0
| | | | | | | | Signed-off-by: Harvey Harrison <[email protected]>
* | NEWT KeyEvent: Use UTF-16 UniCode for key-code and key-symbol exposing well ↵Sven Gothel2013-04-1117-916/+1446
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | defined key encoding and simplify usage. Note, we use one collision to reduce key-code range: [0x61 .. 0x78] keyCodes [F1..F24] collide w/ ['a'..'x'] Since keyCode/Sym won't use lower capital a-z, this is a no isssue. KeyEvent: - 'printable' type is being determined by a nonPrintableKeys table, while 'action' type is set in case !printable and !modifier. - public ctor hidden, use create(..) method instead. This allows us to ensure modifier bit are properly set (incl. the keySym one) w/o performance loss. - ctor validates that only one of the type flags is set, printable, modifyable or action. WindowImpl: - Using IntBitfield of 255 bits to track pressed state, while removing the repeat state tracking since it is redundant. The Windows impl. uses a single field to validate whether a key was already repeated or not. - Properly cast keyCode short values to int for tracking! AWTNewtEventFactory, SWTNewtEventFactory: - Add translation of keyCode/Sym from and to NEWT - All tested via: - Newt -> Awt for AWTRobot - OSX CALayer: AWT -> NEWT - SWT tests X11: - Add VK_CONTEXT_MENU mapping (XK_Menu) LinuxEventDeviceTracker: - Fix apostrophe and grave mapping, i.e. to VK_QUOTE and VK_BACK_QUOTE. Adapted all unit tests, especially: - TestNewtKeyCodesAWT: More fine grained keyCode ranges to test using proper keyCode symbols.
* | GLContextImpl.destroy(): Fail fast in case of invalid dawable [null, ↵Sven Gothel2013-04-101-14/+21
| | | | | | | | !realized] and makeCurrent() failure.
* | GLDrawable: Refine API doc; GLDrawableImpl: Balance ↵Sven Gothel2013-04-105-55/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | createHandle()/destroyHandle(); Handle LOCK_SURFACE_CHANGED in lockSurface() ; GLContextImpl.makeCurrent(): Fix drawable handle validation. GLDrawable: Refine API doc (realized/handle) - Lifecycle of the drawable handle was not clear - Ephasizing handle's dependency on NativeSurface's lock state and drawable's realization GLDrawableImpl: Balance createHandle()/destroyHandle() - updateHandle() -> createHandle() - ensure both are balance, see below GLDrawableImpl: Handle LOCK_SURFACE_CHANGED in GLDrawableImpl's lockSurface() - call destroyHandle() and createHandle() GLContextImpl.makeCurrent(): Validate drawable handle if realized only. - it is valid to have an invalid drawable handle if not realized (see above)
* | Debug Messages: Unify getThreadName() usage and 'Catched Exception' messagesSven Gothel2013-04-1020-64/+64
|/
* Fix Bug 703: Quaternion slerp function. Disclaimer: Not tested / No unit test.Harvey Harrison2013-04-091-30/+39
|
* Bug 641 NEWT: Refine definition of keySym, i.e. for printable keys, keySym ↵Sven Gothel2013-04-081-1/+6
| | | | is the 'unshifted' UTF-16 char value ; Add isPrintable() to toString().
* Bug 641 NEWT/OSX Deliver keySym, derived from the current layout's ↵Sven Gothel2013-04-084-12/+171
| | | | lower-case UTF-16 character.
* NEWT KeyEvent: More tight definition of isPrintable(), i.e. must have ↵Sven Gothel2013-04-083-16/+26
| | | | defined keyCode [and keyChar]; VK_KEYBOARD_INVISIBLE -> isActionKey
* NEWT/OSX: Remove USE_SENDIO_DIRECT conditional compilation, by now it's ↵Sven Gothel2013-04-081-25/+2
| | | | clear we need to enqeue the events
* Bug 641 NEWT/X11: Deliver 'J_VK_WINDOWS'; keySym is layout independent for ↵Sven Gothel2013-04-081-3/+16
| | | | dead-keys (zero keyChar); For 'unshifted' keySym's also unmask Ctrl and Mod* states
* NEWT/Native: NewtCommon_GetJNIEnv(..) adding 'asDaemon' flag, used by all ↵Sven Gothel2013-04-083-30/+35
| | | | OSX JNI attachments to save time since detachment is skipped.
* Bug 641 NEWT: X11 Deliver keyCode layout independent, keySym layout ↵Sven Gothel2013-04-084-30/+80
| | | | | | | | | | dependent and UTF-16 keyChar value On X11, the layout dependent keySym was not delivered [1], as well as the UTF-8 to UTF-16 translation was missing [2]. [1] is solved using XLookupString w/o ShiftMask [2] is solved using JNI's NewStringUTF, which takes UTF-8.
* Bug 709: Testing texured demo w/ FBO, comparing w/ onscreen - No corruption.Sven Gothel2013-04-062-0/+283
|
* Bug 678: Differentiate ALT (left) and ALT_GRAPH (right) on X11, EventDev, ↵Sven Gothel2013-04-066-28/+51
| | | | | | | Windows and OSX - X11: Memorize pressed Alt_R to decide which 'alt' has to be used for non key modifier fetching - Windows: Only use GetKeyState(..) and compare the US vkey, since int. kbd layout use reduced scancode
* TestGLAutoDrawableGLCanvasOnOffscrnCapsAWT: Wrong test comment, no NEWT involvedSven Gothel2013-04-061-3/+0
|
* Bug 707: Fix NEWT EVENT_MOUSE_EXITED not sent on Windows - Regression of ↵Sven Gothel2013-04-052-10/+20
| | | | | | | commit 85338858f5c58694fa88e77df1386d0556887944 Commit replaced enqueueMouseEventID w/ sendMouseEventID, while not removing the 'jboolean wait' argument. This also lead to staying in DRAGGED mode when mouse left the window.
* Bug 713: Handle broken EGL setup - Catch all Exception types, not only ↵Sven Gothel2013-04-054-10/+5
| | | | | | | | | | JogampRuntimeException at *DrawableFactory* instantiation trial In case EGL is not completly installed, EGLDisplayUtil.eglGetDisplayAndInitialize(..) will throw a GLExeception which was not catched in GLDrawableFactory. The latter only catched JogampRuntimeException caused by ReflectionUtil due to n/a classes, but the actual initialization code is capable to throw others.
* SWT unit tests: Sort w/ AWT and Headless - Fix threading w/ AWT.Sven Gothel2013-04-043-17/+24
| | | | This especially impacts (fixes) Mac OSX.
* OSX CALayer Unit Tests: NEWT child is destroyed if NewtCanvasAWT is ↵Sven Gothel2013-04-044-8/+35
| | | | disposed/removed, due to offscreen/onscreen transition
* OSX CALayer/NewtCanvasAWT: Force relayout of component (size +1, size -1) ↵Sven Gothel2013-04-044-19/+81
| | | | when attaching NEWT Child to avoid false CALayer position.
* OSX/CALayer Threading Part4: Stream all JAWT Root CALayer Operations on OSX ↵Sven Gothel2013-04-044-120/+95
| | | | | | | | | | | | Main-Thread Previous code created, set and unset the root CALayer on the current thread, which lead to a very delayed destruction of the root CALayer w/. With Java7 this lead to a possible resource starvation in certain situations, since Java7 uses an CAOpenGLLayer. Similar w/ f354fb204d8973453c538dda78a2c82c87be61dc, creation, set and unset is operated on main-thread.
* JAWTWindow: Issue component.repaint() after attachSurfaceLayer(..), ↵Sven Gothel2013-04-031-1/+1
| | | | otherwise no rendering result might be visible w/o Animator
* OSX CALayer minor edit: Call [super setFrame..] directlySven Gothel2013-04-031-1/+2
|
* NewtCanvasAWT: Cleanup up private method calls; Attach/Detach JAWTWindow's ↵Sven Gothel2013-04-031-12/+9
| | | | SurfaceUpdateListener to NEWT Window when it gets attached/detached.
* Fix Bug 671: Add JPEG Decoder w/o AWT DependenciesSven Gothel2013-04-0118-20/+2589
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Original JavaScript code from <https://github.com/notmasteryet/jpgjs/blob/master/jpg.js>, author 'notmasteryet' <async.processingjs at yahoo.com>. Ported to Java. Enhancements: * InputStream instead of memory buffer * User provided memory handler * Fixed JPEG Component ID/Index mapping * Color space conversion (YCCK, CMYK -> RGB) * More error tolerant +++ Features: JOGL AWT RGB ok ok YCCK ok Exception CMYK ok Exception YUV Store ok n/a Need Y-Flip no yes +++ Benchmark: TestJPEGJoglAWTBenchmarkNewtAWT JOGL.RGB Loops 100, dt 1199 ms, 11.99 ms/l JOGL.YUV Loops 100, dt 351 ms, 3.51 ms/l AWT..... Loops 100, dt 2144 ms, 21.44 ms/l File: jogl/src/test/com/jogamp/opengl/test/junit/jogl/util/texture/j1-baseline.jpg Machine: GNU/Linux PC (AMD 8 core), JavaSE 6 (1.6.0_38) .++++ UITestCase.setUp: com.jogamp.opengl.test.junit.jogl.util.texture.TestJPEGJoglAWTBenchmarkNewtAWT - benchmark libEGL warning: DRI2: failed to authenticate 0: JPEGImage[261x202, bytesPerPixel 3, reversedChannels false, JPEGPixels[261x202, sourceComp 3, sourceCS YCbCr, storageCS RGB, storageComp 3], java.nio.DirectByteBuffer[pos=0 lim=158166 cap=158166]] 0: TextureData[261x202, y-flip false, internFormat 0x1907, pixelFormat 0x1907, pixelType 0x1401, border 0, estSize 158166, alignment 1, rowlen 0, buffer java.nio.DirectByteBuffer[pos=0 lim=158166 cap=158166] JOGL.RGB Loops 100, dt 1199 ms, 11.99 ms/l 0: JPEGImage[261x202, bytesPerPixel 3, reversedChannels false, JPEGPixels[261x202, sourceComp 3, sourceCS YCbCr, storageCS YCbCr, storageComp 3], java.nio.DirectByteBuffer[pos=0 lim=158166 cap=158166]] 0: TextureData[261x202, y-flip false, internFormat 0x1907, pixelFormat 0x1907, pixelType 0x1401, border 0, estSize 158166, alignment 1, rowlen 0, buffer java.nio.DirectByteBuffer[pos=0 lim=158166 cap=158166] JOGL.YUV Loops 100, dt 351 ms, 3.51 ms/l 0: TextureData[261x202, y-flip true, internFormat 0x1907, pixelFormat 0x80e0, pixelType 0x1401, border 0, estSize 158166, alignment 1, rowlen 261, buffer java.nio.HeapByteBuffer[pos=0 lim=158166 cap=158166] AWT..... Loops 100, dt 2144 ms, 21.44 ms/l ++++ UITestCase.tearDown: com.jogamp.opengl.test.junit.jogl.util.texture.TestJPEGJoglAWTBenchmarkNewtAWT - benchmark
* NewtBaseActivity: Move setVisible(false) from onPause() -> onStop(), since ↵Sven Gothel2013-03-291-4/+4
| | | | only onStop() declares invisible status. onPause() could imply other non fullscreen activity on top.
* Adapt to new version scheme, see GlueGen ↵Sven Gothel2013-03-283-7/+10
| | | | | | | a3f2ef50ad33c58a240a17fcf03e415d772207c3, etc; Fix NewtVersion, NativeWindowVersion and NewtVersionActivityLauncher NewtVersion, NativeWindowVersion: Also search for extension javax.media.opengl (all packaging) NewtVersionActivityLauncher: Use new launcher URI
* NEWTGearsES2Activity*: Adding property to enable 'process kill' behavior ↵Sven Gothel2013-03-282-1/+37
| | | | (memory and killSelf)
* NewtBaseActivity: Perform cleanup() even on onCreate() due to possible call ↵Sven Gothel2013-03-281-10/+55
| | | | | | w/ initialized states (App process is killed for memory exhaustion etc) .. even though I was not able to reproduce this case, it will not harm.
* GLStateKeeper: Add clearPreservedGLState()Sven Gothel2013-03-282-3/+21
|
* Complete 9a4fcc7ea4ec61e4ceed791acced734ac04ea270: ↵Sven Gothel2013-03-271-3/+0
| | | | SharedResourceRunner.Impl.createSharedResource(..): isGLXAvailableOnServer(..) call redundant since checked upfront at isDeviceSupported(..)
* SharedRessourceRunner: Add isDeviceSupported(..) query before spawn off ↵Sven Gothel2013-03-273-2/+31
| | | | thread, allowing a more gracefull detection of n/a GLX on X11
* PNGImage: Add license header ; TestPNGImage01NEWT package move ..Sven Gothel2013-03-272-2/+28
|
* Unit Tests: Unify 'AWT Robot Key Press/Release', waitForIdle, action, delay, ↵Sven Gothel2013-03-273-13/+26
| | | | waitForIdle ; TestFocus0*: Wait until closed after win.destroy().
* NEWTEvent: Fix toString message - add commaSven Gothel2013-03-261-1/+1
|
* GLJPanel: Refine API docSven Gothel2013-03-261-8/+15
|
* Android/NEWT MouseEvent: Fix Detection/Processing of 2-Finger-Scroll Gesture ↵Sven Gothel2013-03-244-88/+154
| | | | | | | | | | | | | | | | | - Part 2 Multiple tests on different devices disclosed that: - 1 of 2 pointers get disconnected every now and then .. -> Shall tolerate this case - dist-delta within gesture may shrink below doubleTouchSlope -> Remove constraint after gesture detection - Always validate pointer-id GearsES2 - Works quite stable on several devices now - Moved soft-keyboad show to 4-pointer pressed >= 0.7f pressure
* Newt/MouseEvent: Add 'float[3] getRotation()', getWheelScale() -> ↵Sven Gothel2013-03-244-51/+107
| | | | | | | | | | | | getRotationScale(), refinement of commit 18cb57246372eda72c25a5cd9a69a873bdf09489 Turns out the 'wheel' semantics are not generic enough and confining rotation values to one axis only satisfies the traditional mouse wheel. Widen the definition of 'rotation' and delivering 3-axis if supported. On NEWT/Android, we deliver the 2-axis for example, allowing to rotate around both or scrolling using both directions (-> GearsES2).
* Android/NEWT MouseEvent: Fix Delivery of MultiTouch PRESSED/RELEASE; Fix ↵Sven Gothel2013-03-242-172/+305
| | | | | | | | | | | | | | | | | | | | | | | | Detection/Processing of 2-Finger-Scroll Gesture ; GearsES2: Add NEWT based 'zoom' gesture detection. - Fix Delivery of MultiTouch PRESSED/RELEASE Adopting MouseEvent changes of commit 18cb57246372eda72c25a5cd9a69a873bdf09489 - Fix Detection/Processing of 2-Finger-Scroll Gesture Dropping utilization of Android's GestureDetector and implementing our own, which turns out to simplify keeping track of states. Our gesture detection works well w/ user NEWT based gesture detection (-> See GearsES2 zoom and rotate), using following criteria related to Android parameter: - ScaledDoubleTapSlop: - Max 2 finger distance - ScaledTouchSlop: - Min. movement w/ 2 pointer withing ScaledDoubleTapSlop starting 'scroll' mode - Max. change of finger distance in respect to initiating 2-finger distance (2x ScaledTouchSlop) - Max. distance growth in respect to initiating 2-finger distance. - GearsES2: Add NEWT based 'zoom' gesture detection.
* NEWT/MouseEvent: Refine MultiTouch Event Spec regarding associated 'action' ↵Sven Gothel2013-03-241-15/+82
| | | | | | | | | | | | | | | | | | | | pointer Index; Add PointerType[PointerClass]; Add 'wheelScale' Attribute; - Refine MultiTouch Event Spec regarding associated 'action' pointer Index In case an instance represents multi-touch events, i.e. {@link #getPointerCount()} is > 1, the first data element represents the pointer which triggered the action if individual to one pointer. For example {@link #getX(int) e.getX(0)} at {@link #EVENT_MOUSE_PRESSED} returns the data of the pressed pointer, etc. - Add PointerType[PointerClass] This allows applications to identify the type and it's class [On-/Offscreen] helping to interpret semantics, e.g. wheel-rotate and new wheel-scale - Add 'wheelScale' Attribute Returns the scale used to determine the {@link #getWheelRotation() wheel rotation}, which semantics depends on the {@link #getPointerType() pointer type's} {@link PointerClass}. See API doc for details .. TODO: NEWT/Android changes adopting these changes.
* NEWT/Android: Fix suspense regression of commit ↵Sven Gothel2013-03-231-2/+6
| | | | | | | | | | d514ecbf052d013ea8c0982c490757678075a9ea Explicit win.destroy() shall only be called at activity.onDestroy(), - GLStateKeeper preservation is marked at pause, - and the Window's surfaceDestroyed() will also issue destroy() - so it's safe Reason: On Suspense (or power button), application is paused _without_ surfaceDestruction !
* NEWT/Android (Bug 665): Add Support for GLStateKeeper ; onPause() always ↵Sven Gothel2013-03-2216-76/+188
| | | | | | | | | | | | | | | | | | | destroys ; Recognizing all GLAutoDrawable's GLAnimatorControl for pause/resume ; Use GLAnimatorControl instead of Animator - Add Support for GLStateKeeper If !isFinishing() (HOME button), preserve the GLEventListener if an GLStateKeeper instance - onPause() always destroys onDestroy() is too late, i.e. surfaceDestroyed() already called - Recognizing all GLAutoDrawable's GLAnimatorControl for pause/resume pause/resume the GLAnimatorControl of all GLAutoDrawable instances - Use GLAnimatorControl instead of Animator We used an Animator reference .. duh! Note: The EGL native WindowDriver (Android and BCM.IV) must retain their own copy of EGLGraphicsDevice, which preserves the EGLDisplay handle due to EGLDisplayUtil reference counting per nativeHandleID.
* NEWT/Android WindowDriver.closeNative0(..): Catch Exception at surface ↵Sven Gothel2013-03-221-4/+10
| | | | destroy allowing to continue destruction.
* Animator: Cleanup DEBUG outputSven Gothel2013-03-221-4/+4
|
* Add GLStateKeeper handling GLEventListenerState preservation and ↵Sven Gothel2013-03-2211-24/+152
| | | | | | | | | | | | | | | restauration for GLAutoDrawable - New GLStateKeeper interface, package com.jogamp.opengl Implemented by: - GLAutoDrawableBase Currently supported by: - NEWT GLWindow - GLEventListenerState package move: com.jogamp.opengl.util -> com.jogamp.opengl
* NEWT/Android: Remove KeyEvent.KEYCODE_HOME handling, since it doesn't work - ↵Sven Gothel2013-03-221-19/+0
| | | | i.e. cannot be intercepted this way.
* NEWT/Android: Fix BACK button implementation, use different KeyCode mappings ↵Sven Gothel2013-03-215-24/+146
| | | | | | | | | | | | | | | | | | | | | and allowing native action to be suppressed. - Don't trust soft-kbd visibility state, but perform invisible action. If the latter was successful - soft-kbd was visible before. - Map BACK to VK_KEYBOARD_INVISIBLE and propagate it, if soft-kbd was visible before. No native default action is performed. - Map BACK to VK_ESCAPE event and propagate it, if soft-kbd was invisible _and_ an activity was registered via registerActivity(Activity), i.e. by NewtBaseActivity. Otherwise proceed w/ default action (-> activity.finish()). - If the KeyListener consumed the [EVENT_KEY_RELEASED, VK_ESCAPE] event, it will be suppressed and no default action performed. This allows applications to have a custom 'ESCAPE' or 'BACK' handling. Otherwise (not consumed) the default action is performed.
* NEWTEvent: Add isConsumed() and setConsumed(boolean) methods to simply ↵Sven Gothel2013-03-213-14/+42
| | | | usage, using the existing consumedTag attachment for compatibility and efficiency.