aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Bug 867 OSX [Common Code]: Trigger GLRendererQuirks.GL4NeedsGL3Request and ↵Sven Gothel2013-10-259-84/+148
| | | | | | | | | | | | | | | | | | | | | | | | make it sticky; Only alias profiles if HW-Accelerated! Only alias profiles if HW-Accelerated! GLContextImpl.mapGLVersions(..) shall not map a higher profile to a lower if it is a software renderer. +++ GLContextImpl.mapGLVersions(..) attempts to trigger GLRendererQuirks.GL4NeedsGL3Request if OSX 10.9 by creating a GL3 core context first. +++ GLContextImpl.setGLFunctionAvailability(): - On OSX 10.9: Detect GLRendererQuirks.GL4NeedsGL3Request and make it sticky (per device) while 'withinGLVersionsMapping' - Merge sticky quirks w/ local quirks +++ TestGearsES2NEWT: Add cmdline '-gl2' to force GL2 profile.
* Bug 867 - OSX: Allow core >=4 if isMavericksOrLater; Use ↵Sven Gothel2013-10-242-27/+48
| | | | [kCGLOGLPVersion_GL4_Core, kCGLOGLPVersion_GL3_Core] for major==4 depending on sticky GLRendererQuirks.GL4NeedsGL3Request
* Bug 871 - Add optional xcode.clang support for all modules (Extends Bug 837 ↵Sven Gothel2013-10-241-1/+1
| | | | | | w/ xcode's xcrun) - Remove abs. include path. #include </usr/include/machine/types.h> -> #include <machine/types.h>
* Bug 867 - OSX 10.9: Recognize OpenGL Core Profile > 3.0 - Add ↵Sven Gothel2013-10-241-15/+84
| | | | | | | | | | | | GLRendererQuirks: Quirk GL4NeedsGL3Request and 'sticky device quirks' The 'sticky device quirks' are required to share quirks among devices as collected while mapping the GL versions (audit). Those are context independent and may only be detected for certain contexts. They can be pushed/added to the context's quirks, but also queried at context creation (after mapping) - before the local quirks are being created.
* GLContext CTX_IMPL_* bits: Use 10 cached bits (+1), and 6 uncached (-1) ; ↵Sven Gothel2013-10-241-9/+9
| | | | CTX_IMPL_FP32_COMPAT_API: "FP32 compat-api" -> "FP32 compat"
* MacOSXJAWTWindow.CALayer DEBUG: Only Dump AWT location-on-screen if property ↵Sven Gothel2013-10-231-2/+16
| | | | | | | | | | DEBUG_CALAYER_POS_CRITICAL is explicitly set. - DEBUG_CALAYER_POS_CRITICAL = nativewindow.debug.JAWT.OSXCALayerPos Since AWT's location-on-screen query can cause an AWT deadlock, which is the sole purpose of our custom lock-free impl, don't enable it's DEBUG output w/ default DEBUG flags.
* Fix Bug 866 - Frequent IndexOutOfBoundsException in ↵Brice Figureau2013-10-231-1/+1
| | | | jogamp.opengl.egl.EGLGraphicsConfigurationFactory: Add missing 'else' in branch
* PinchToZoomGesture: Add ctor arg 'allowMorePointer', should be false to be ↵Sven Gothel2013-10-192-66/+76
| | | | more stable (i.e. only 2 pointer pressed)
* Fix Bug 827 - ShaderProgam helper class reports errors incorrectlySven Gothel2013-10-191-2/+2
|
* Fix Bug 862: Fix GL Version Validation / NVidia GTX550 driver 331.13 - 64bit ↵Sven Gothel2013-10-193-90/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Linux - No compatibility GLProfile (GL2, >= GL3bc) Fix GL Version Validation: We shall not rely on our known good versions when validating a queried GL context version, but allow some 'room' for a higher version post JOGL release while still cutting off 'odd versions'. While GL version detection, we always iterate from the highest known version down to the lowest. Hence 'GLContext.isValidGLVersion(..)' is satisfied by validating the lowest version number but allowing a higher than known one. Now we would return 'invalid' for a version >= 6. It is enough to clip to the maximum known version when iterating, allowing the highest unknown version to be available. GLContext.isValidGLVersion(..): Returns true, if the major.minor is not inferior to the lowest valid version and does not exceed the highest known major number by more than one. The minor version number is ignored by the upper limit validation and the major version number may exceed by one. The upper limit check is relaxed since we don't want to cut-off unforseen new GL version since the release of JOGL. Hence it is important to iterate through GL version from the upper limit and 'decrementGLVersion(..)' until invalid. Add GL Version 4.4 to valid known versions. Remove ES3 desktop detection, which is impossible Regression of commit 3a0d7703da32e9a5ddf08a334f18588a78038d88 (ES3 support)
* jogl: allow short-circuited comparison in comparisonHarvey Harrison2013-10-181-1/+1
| | | | | | | For this case && and & work equivalently, but using && allows the second comparison to be omitted if the first comparison is false. Likely just a typo. Signed-off-by: Harvey Harrison <[email protected]>
* jogl: avoid creating a second String object, one is enoughHarvey Harrison2013-10-186-6/+6
| | | | | | | One String is already being built, passing it to new String() is just wasteful as the temp String can be returned just as easily. Signed-off-by: Harvey Harrison <[email protected]>
* jogl: fix typo in RandomTileRenderer, range chack was for tY, not tX againHarvey Harrison2013-10-171-1/+1
| | | | Signed-off-by: Harvey Harrison <[email protected]>
* jogl: allow case statements to fall through to same blockHarvey Harrison2013-10-171-2/+0
| | | | | | | | This block is falling through to the next cases where there two variables are set to the same values. Just remove this block and let all cases fall through to the same block. Signed-off-by: Harvey Harrison <[email protected]>
* jogl: fix two impossible comparisons in glu/tessellatorHarvey Harrison2013-10-171-2/+2
| | | | | | | | | The comparison to Long.MAX_VALUE will never trigger as it is coparing with an int. The intent of this code appears to be to check against Integer.MAX_VALUE which is used as an error code (unable to allocate sufficiently large array) from the priorityQueue. Signed-off-by: Harvey Harrison <[email protected]>
* jogl: add missing @Override annotationsHarvey Harrison2013-10-17323-4/+1132
| | | | Signed-off-by: Harvey Harrison <[email protected]>
* jogl: remove all trailing whitespaceHarvey Harrison2013-10-17643-12269/+12269
| | | | Signed-off-by: Harvey Harrison <[email protected]>
* MouseEvent: Clarify button-number and pointer-ID relation incl. case 'no ↵Sven Gothel2013-10-182-21/+76
| | | | | | | | | | button/pointer', i.e. button == 0, pointer-ID == -1 doPointerEvent: - allow id==-1 -> button==0 for no button, i.e. mouse move doMouseEvent: - keep button 0 value, i.e. map to pointer-ID -1
* AWTPrintLifecycle.setupPrint(..): Fix regression of commit ↵Sven Gothel2013-10-182-12/+15
| | | | | | | | | | | | a05b87a369441d9ef38f97929f866b3d4ced0e57: NULL printGLAD of GLCanvas and NewtCanvasAWT We have to pre-init printGLAD w/ current GLAD (similiar w/ GLJPanel). Also properly define reqNewGLAD: reqNewGLAD = !caps.getSampleBuffers() && ( reqNewGLADOnscrn || reqNewGLADSamples || reqNewGLADSize ); where '!caps.getSampleBuffers() && ( .. )' is due to Bug 830, swapGLContextAndAllGLEventListener and onscreen MSAA w/ NV/GLX does not work.
* Bug 800: Windows 7 Touch Event Support for NEWT: Fix Focus and ↵Sven Gothel2013-10-171-51/+74
| | | | | | | | | | | | | LBUTTON[DOWN|UP] issues - w/ TOUCH, Win8 may steal focus (KILLFOCUS), quickly grab FOCUS again when on TOUCH operation - track 'touchDownLastUp', and don't act on LBUTTON[UP|DOWN] and MOUSEMOVE if just lifted last finger - don't use GetMessageExtraInfo() to distinguish MOUSE/TOUCH, simply use tracked touchDownCount - Also track mouseInside in TOUCH operation, i.e. true if _all_ fingers are inside, otherwise don't send TOUCH event
* WindowImpl: Fix DEBUG output's method name of doPointerEvent and ↵Sven Gothel2013-10-171-11/+11
| | | | consumePointerEvent
* Bug 800: Add Windows 7 Touch Event Support for NEWTSven Gothel2013-10-172-112/+368
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Native: - WindowUserData tracks: - window size - mouse inside - pointer touch-down count and flags whether multiple-touch is supported. - Suppress WM_*BUTTON* events if within TOUCH operations, e.g. fingers are pressed, or if event is determined as TOUCH (0 != GetMessageExtraInfo()) - MOUSEMOVE issues NewtWindows_trackPointerLeave(..) directly if no TOUCH operation is in process. Removes need for MouseListener on Java side. - TOUCH events are send as follows: - PRIMARY first - 1 MOVE 2nd (if not sent already) - UP/DOWN (if not sent already) We only send max. one MOVE event, since Win7 / Win8 assignes MOVE per default, even if no actual move happened. Hence a single MOVE event shall suffice and is compatible w/ e.g. Android (AFAIK). - TOUCH pointer names are mapped to consecutive IDs on the java side.
* WindowImpl.doPointerEvent(..) Simplify pointer name->ID mapping, fix DEBUG.Sven Gothel2013-10-171-5/+7
|
* Regression of commit a90bf31f8747dd38c61d518f8af4d4d4a64a8e90: ↵Sven Gothel2013-10-171-3/+3
| | | | | | 'consume<Type>Event(<Type>Event ..)' must be protected and non-final Overriding by impl. class allowed.
* NEWT Multiple-Pointer API: Use PointerType[] instead of ordinal int[], ↵Sven Gothel2013-10-172-46/+108
| | | | implementer can use PointerType.valuesOf(int[] ordinals) to convert. Enhanced API doc. Methods 'final'
* Refine Int -> Enum conversion (commit ↵Sven Gothel2013-10-172-16/+59
| | | | | | | 40863632d1428de015099b5967e5136425e99f25), throw IllegalArgumentException if ordinal is out-of-range. Add API doc. - FFMPEGNatives - MouseEvent.PointerType
* PinchToZoomGesture: Validate pointer-IDs, skip if invalid.Sven Gothel2013-10-171-24/+26
|
* NEWT PointerEvent: Unify event processing in new doPointerEvent(..) and ↵Sven Gothel2013-10-174-288/+297
| | | | | | | | | | | | | | | consumePointerEvent(..) - Unifies native mouse and Android's pointer event, ready for Win7 touch Unify event processing in new doPointerEvent(..), which is also invoked from doMouseEvent(..), and consumePointerEvent(). doPointerEvent(..): Validates and modifies event data and finally creates the event, where consumePointerEvent(..) calls gesture handlers and may synthesize events. Unifies native mouse and Android's pointer event, ready for Win7 touch. AndroidNewtEventFactory calls doPointerEvent(..) directly. Removed lots of duplicated pointer event handling code.
* Int -> Enum using EnumClass.values()[ordinal] instead of for-loop - ↵Sven Gothel2013-10-172-12/+22
| | | | FFMPEGNatives's Enums and new MouseEvent.PointerType.valueOf(int)
* MouseEvent: Clarify 'Multiple-Pointer' w/ button[mask] semantics, ; ↵Sven Gothel2013-10-176-39/+110
| | | | | | | | | | | | | | InputEvent: getButtonDownCount() and isAnyButtonDown(); - Clarify 'Multiple-Pointer' w/ button[mask] semantics - Pointer IDs start w/ 0 and are consecutive numbers. - 'button' == triggering pointer-ID - buttonMask in modifiers show pressed button _and_ pointer-IDs - deprecated BUTTON_NUMBER -> use BUTTON_COUNT (name semantics)
* Add efficient set(..all..) to Dimension, Insets, Point and Rectangle of ↵Sven Gothel2013-10-1619-79/+50
| | | | NativeWindow's util types.
* AWTPrintLifecycle.setupPrint(..): Add optional tileWidth and tileHeight, ↵Sven Gothel2013-10-1514-105/+185
| | | | allowing user to set custom tile size for performance evaluation/tweak
* Bug 861 - NEWT: Unify MouseEvent Processing incl. gesture processingSven Gothel2013-10-1513-522/+1528
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We processed MouseEvents within NEWT as follows: sendMouseEvent/enqueueMouseEvent -> doMouseEvent, - called by native code to be delivered via consumeMouseEvent (now or later) - events are validated (move/drag, boundaries) - missing events are synthesized (click, enter, ..) as well as in several factories, i.e.: - AWTNewtEventFactory (1:1) - AndroidNewtEventFactory - synthesized events .. (click, ..) - android typed gesture detection (drag -> 1 finger scroll..) The latter enqueues events do Window/Display directly to be consumed by WindowImpl. Then users may have their own gesture detection etc. +++ This change unifies mouse/pointer event processing within NEWT within consumeEvent(..) which represents a common entry point. Gesture processing is now realized w/ a public API - GestureHandler - GestureHandler.GestureListener - GestureHandler.GesureEvent which supplies: - default impl. of optional gesture handlers (scroll, .. - default: enabled) - public API to add/remove gesture-handler and -listener +++ This allows our impl. to scale better in support of more multiple pointer devices (-> Win7/Win8, X11, ..).
* GLMediaPlayer: Fix CameraInputScheme URI doc and Android test streams (Use ↵Sven Gothel2013-10-155-7/+7
| | | | mp4 instead of webm, fix Camera URI)
* Cleanup DirectDataBufferInt: Fix type ; Remove unsused local varsSven Gothel2013-10-151-5/+1
|
* Bug 365: Add unit test, which run's through most of the ScaleInternal ↵Michael Esemplare2013-10-131-0/+272
| | | | functions for a single column image.
* Merge pull request #71 from esemplare/masterSven Gothel2013-10-121-14/+63
|\ | | | | | | | | Fix Bug 365: Bug on javax.media.opengl.glu.GLU.gluBuild2DMipmaps I will commit your unit test manually from the bug report (pls add it to your pull request next time) Thank you!
| * Fix Bug 365: Bug on javax.media.opengl.glu.GLU.gluBuild2DMipmapsMichael Esemplare2013-10-071-14/+63
| | | | | | | | Fixed convolution window widths for single column scaling.
* | Bug 860 - AWT Printing (AWTTilePainter): Shall use the enclosing integer ↵Sven Gothel2013-10-121-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rectangle of the scaled double precision clipping rect AWTTilePainter simply rounds the scaled double precision clipping rectangle to receive the integer rectangle. This leads to uncovered drawing areas, since the integer rectangle position could be greater - and the size could be smaller than the double precision source. To get the enclosing rectangle, we need to use iPos = floor(position) iSize = ceil(position+size) - floor(position) .. turns our that the double precision 'Rectangle Rectangle2D.getBounds()' already performs this math.
* | Bug 859: Let TileRenderer detect zero columns and rows in eot() where ↵Sven Gothel2013-10-129-84/+280
| | | | | | | | beginTile() throws an EOT IllegalStateException to avoid division by zero
* | Bug 852: Validate CPU sourced data API is allowed, throw exception if not. ↵Sven Gothel2013-10-104-8/+7
| | | | | | | | GLContext: isCPUSourcedAvail() -> isCPUDataSourcingAvail()
* | Bug 852: Remove CPU sourced data API entry where not allowed (ES3 and GL ↵Sven Gothel2013-10-106-15/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | core >= 3.0) ; GL2 cfg: Ignore GL2ES3 symbols (super) Remove CPU sourced data API entries via new config 'BufferObjectOnly <name>', listed in 'gl-common-gpubufferonly.cfg' and included in ES3 and all GL core >= 3 interfaces. If BufferObjectOnly is defined for a function, only the 'long offset' variant is being emitted. Due to limitations of GlueGen's 'ExtendedInterfaceSymbolsIgnore A.java', which only identifies the function name and not the signature - all CPU sourced variants are manually added to the compatibility and ES2 GL profiles via '*-common-cpubufferJavaCode.java' files. GLContext: Added 'isCPUSourcedAvail()' to determine whether context allows CPU sourced data, i.e. for GL2ES1 and GLES2 ctx. GLContext/GLProfile/GL: isGLES2() now returns false if having a ES3 context due to 'CPU sourced' incompatibility! +++ GL2 cfg: Added ignore GL2ES3 symbols of it's superclass, removing duplicated symbols.
* | NEWT Reparent/Fullscreen: Add 'waitForPosition(..)' when reparenting or back ↵Sven Gothel2013-10-093-5/+21
| | | | | | | | from fullscreen; JOGLNewtAppletBase: Reparent to pos 32/32, trying to avoid browser window focus/top stealing on X11.
* | Bug816 OSX CALayer: Issue w/ JSplitPane within Apple (Firefox, Safari - not ↵Sven Gothel2013-10-094-4/+212
| | | | | | | | | | | | | | appletviewer) when move horizontal slider (vertical: ok) Moving horizontal slider if run as applet (Firefox, Safari - not appletviewer) doesn't move the GLCanvas even though it is resized.
* | NewtCanvasAWT Focus Traversal: Remove AWT's requestFocus*() overrides in ↵Sven Gothel2013-10-092-49/+21
| | | | | | | | | | | | | | | | | | | | favor of FocusPropertyChangeListener requestFocusNEWTChild() The AWT's requestFocus*() overrides were intended to receive the AWT focus (default) and clear it afterwards to forward the focus to the NEWT component -> requestFocusNEWTChild(). This can be achieved simply by using our FocusPropertyChangeListener and invoking requestFocusNEWTChild() when receiving the focus on the NewtCanvasAWT component.
* | NEWT Reparent/Fullscreen: Fixes X11 unsuccessful return to parent window; ↵Sven Gothel2013-10-0911-191/+166
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add reparentWindow(..) top-level position arguments; Misc - Fixes X11 unsuccessful return to parent window On X11 when returning to parent window (-> CHILD), we have to set the window invisible and wait for the result. Otherwise it sometimes happens that the WM's reparent operation fails, i.e. the window won't become a child of desired parent and is positioned randomly. - Add reparentWindow(..) top-level position arguments .. allows bringing the child-window to top-level w/ a desired position. Otherwise the window would be positioned elsewhere as a top-level as the plain reparenting operation. X11 needs to set position and size _after_ making the window visible, otherwise WM may ignore the XConfigureWindow request. - Reparent recreate shall always store the desired position and size On OSX/CALayer when recreation is being used, we need to store the pos/size for later creation. - Tests: Use 'NewtAWTReparentingKeyAdapter' where possible (reparent/fullscreen) instead of duplicating such code. NewtAWTReparentingKeyAdapter: Performs reparenting and fullscreen operations off-thread (i.e. not on AWT/NEW EDT) while decorating the action w/ revoking/restoring the ExclusiveContextThread (ECT). Manually tested 'TestGearsES2NewtCanvasAWT' reparenting and fullscreen on X11, Windows and OSX/CALayer w/ JDK 7u40 successful.
* | NEWT Display: Issue EDTUtil.start() at runOnEDTIfAvail(..) even if on EDT, ↵Sven Gothel2013-10-098-40/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | which is to be stopped. This case appears on e.g. OSX/CALayer (offscreen) reparenting using recreation (onscreen <-> offscreen), i.e. display destroy/create is performed on EDT. Misc Cleanup: - Rename EDTUtil: restart() -> start() - Rename Display: validateEDT() -> validateEDTStopped() - Simplify Display.setEDTUtil(..): Remove need for redundant 'newEDTUtil' local var. - Simplify Display.runOnEDTIfAvail(..): edtUtil is never null
* | NEWT/OSX (Bug 836): Only WindowDriver.initWindow0(..) operation on ↵Sven Gothel2013-10-091-8/+13
| | | | | | | | | | | | main-thread must be synchronized (wait-until-done) - Leave WindowDriver.close0(..) w/o sync
* | NEWT/OSX (Bug 836): Lifecycle operations performed on main-thread must be ↵Sven Gothel2013-10-072-38/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | synchronized (wait-until-done) Wait-until-done (main thread): - WindowDriver.close0(..) - WindowDriver.initWindow0(..) Otherwise a re-queued operation (i.e. CALayer attachment) will mixup the order .. Experienced w/ fullscreen exit.
* | NEWT/Fullscreen (Bug 836): Exit re-parenting fullscreen w/ ↵Sven Gothel2013-10-072-22/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [invisible-exit-visible] (-> like reparent); Always force focus; X11: Always use ALWAYSONTOP. - Remove unused 'fullscreenUseSpanningMode' state - Exit re-parenting fullscreen w/ [invisible-exit-visible] (-> like reparent) solves X11 issue, where the NEWT window doesn't 'return to it's parent'. Probably also fixes Bug 836! - Always force focus when enter and exit FS - X11: Always use ALWAYSONTOP No reason to behave different (spanning and normal-fs)