summaryrefslogtreecommitdiffstats
path: root/src/nativewindow/classes
Commit message (Collapse)AuthorAgeFilesLines
* Initialize JAWTUtil/JAWTJNILibLoader in static initialzier block, not ↵Sven Gothel2011-11-213-4/+9
| | | | leaving privileged block
* NEWT/AWT Focus Traversal / Deadlock Fix (Windows) ; Harmonized NEWT ↵Sven Gothel2011-11-181-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | KeyListener handling (Bug 526) NativeWindow: - expose 'hasFocus()' Window: - 'protected enqueueRequestFocus(..)' -> 'public requestFocus(boolean wait)' - New: 'setKeyboardFocusHandler(KeyListener)' allowing focus traversal co-op w/ covered TK (AWT) WindowImpl: - Impl Window changes (see above) - Impl 'consumedTag' see commit 3b38957f36d4f89b85730755a41c00892ac70591 NewtCanvasAWT: - FocusAction only removes the global AWT focus owner. This fixes a deadlock on the Windows platform of AWT's native peer requestFocus impl, since it's no more called at this point. - NEW FocusTraversalKeyListener is set as the newtChild's KeyboardFocusHandler, allowing traversal to the next/previous AWT component. AWTParentWindowAdapter: - focusGained(..) clears AWT focus and propagates focus to Newt child, non blocking w/ 'requestFocus(false)' (see above) KeyEvent: - Document limitations of getKeyChar() (Bug 526) MacWindow: - only deliver keyChar on key Typed events, harmonizing platform behavior (Bug 526) WindowsWindow: - regenerate the keyCode for EVENT_KEY_TYPED (Bug 526) X11Windows: - complete keyCode mapping X11 -> Newt - X11KeySym2NewtVKey() - only deliver keyChar on key Typed events, harmonizing platform behavior (Bug 526) Tests: - GearsES2: Make focus visible - TestParentingFocusTraversal01AWT: unit test for keyboard focus traversal w/ NewtCanvasAWT
* Fix OS X JAWT SIGSEGV @ NEWT Window creation ; Reloc ↵Sven Gothel2011-11-185-47/+94
| | | | | | | | | AttachJAWTSurfaceLayer() OSXUtil -> MacOSXJAWTWindow Threading/sync issue when creating a NEWT window, which issues a Java callback from native code (positionChanged()). The latter requires a location validation w/ getLocationOnScreen() involved. Hence getLocationOnScreen() shall not lock the JAWT native resources, since it may not be ready yet (-> threading/sync issue).
* OSXUtil: Remove (ClassLoader) dependency on JAWT_DrawingSurfaceInfo (dirty hack)Sven Gothel2011-11-121-2/+4
| | | | .. need to move the attach/detach surface layer NIO methods to a AWT OSX class.
* OS X Layered View Part8: Generalize OffscreenLayerSurface ; Use local JAWT ↵Sven Gothel2011-11-127-100/+274
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instance ; Applet's on OS X are working Generalize OffscreenLayerSurface - Using new OffscreenLayerSurface allows using this functionality in a clean manner, ie. no 'dirty' usage of MacOSXJAWTWindow in a JOGL GL class. - 'Promoting' OffscreenLayerSurface functionality to JAWTWindow and it's handling to GLDrawableFactoryImpl::createGLDrawable(). - Move MacOSXCGLDrawableFactory's "MacOSXJAWTWindow getLayeredSurfaceHost(NativeSurface surface)" to NativeWindowFactory "OffscreenLayerSurface getOffscreenLayerSurface(NativeSurface surface, boolean ifEnabled)" Use local JAWT instance - Only w/ a local JAWT instance per JAWTWindow it is possible to switch between offscreen-layer and onscreen. We also have to determing offscreen-layer lazy at surface lock, since only at that time we have knowledge whether it's an Applet or not. +++ ContextUpdater: Use local pthread mutex, add DEBUG output JAWTWindow/NewtCanvasAWT: Adding methods to request offscreen-layer-surface (if supported), besides 'if applet' this may trigger the new functionality. +++ Applet's on OS X are working: - OS X 10.6.4 - Safari: - Hangs for a while at start .. whole screen freezes .. approx. 10s - Sometimes crashes when Applet stops - after all our resources are released! - Keyboard input isn't assigned sometimes. - Otherwise .. works well, incl. offscreen/onscreen parenting - Firefox 8.0: - Hangs for a while at start .. whole screen freezes .. approx. 10s - Sometimes crashes when Applet stops - after all our resources are released! - Keyboard input is never assigned. - Otherwise .. works well, incl. offscreen/onscreen parenting - OS X 10.7 - Safari: - Sometimes crashes when Applet stops - after all our resources are released! - Keyboard input isn't assigned sometimes. - Otherwise .. works well, incl. offscreen/onscreen parenting - Firefox 8.0: - Sometimes crashes when Applet stops - after all our resources are released! - Keyboard input is never assigned. - Otherwise .. works well, incl. offscreen/onscreen parenting
* Nativewindow: Introduce API private MutableGraphicsConfigurationSven Gothel2011-11-124-6/+54
| | | | | MutableGraphicsConfiguration allows derivations to set the chosen capabilities, hence it is a non public API from which eg. JOGL GraphicsConfiguration derive.
* OS X Layered View: Part7 Allow NEWT onscreen MacWindow to be used incl ↵Sven Gothel2011-11-112-6/+12
| | | | | | reparenting Test: enable NEWT 'onscreen' case
* Revert introduction of NativeSurfaceHolder and NativeWindowHolder interfacesSven Gothel2011-11-117-106/+2
| | | | | | | | | | | | | I was too fast introducing these accessors, since they are currently not needed and hence redundant. Complete - 7bc4c218b47033cb66f4eb5e707a86a0a4e60cff Partial in regards to the holder interfaces only: - d8fa00d35a49f4faf5f04aeb7e2bba4e972965f5 - f51e3dad6c4bd1f6d0001cecf6a0f692400ed602 - 46542168d64b37f544f61802693f15b59b224e4e
* OS X Layered View: Part6 (native) Using a root CALayer where we ↵Sven Gothel2011-11-102-73/+83
| | | | | | | | | | | | | | | | | attach/detach our GL one - it seems to be more stable, having one root CALayer attached to the JAWT_SurfaceView forever - tackles crach at GL layer destruction - proper release of all GL layer resources - now final [gl-layer dealloc] happens at very destruction of JAWT object, even though it was removed from root-layer earlier (and all other references) - see comment in MacOSXWindowSystemInterface-pbuffer.m :: createNSOpenGLLayer(..) - at least no more crash .. and resource release ASAP, but the GL-layer itself (see above)
* Fix MacOSXJAWTWindow: Impl. SurfaceChangeable ; Proper invalidateNative()Sven Gothel2011-11-102-11/+38
| | | | | | | | | | Impl. SurfaceChangeable (regression 8f5465396fe429ce6b7ecae808416691271c7867) - offscreenSurfaceLayer code requires instanceof SurfaceChangeable - overwrite JAWTWindow size getter: use surfaceSizeChanged() values if used. Proper invalidateNative() - detach JAWTSurfaceLayer if set - destroy dummy NSWindow (was typo)
* Fix regression JAWTWindow/AWTGraphicsConfiguration ↵Sven Gothel2011-11-101-0/+11
| | | | | | | | | | | updateGraphicsConfiguration() of commit 46542168d64b37f544f61802693f15b59b224e4e While introducing NewtCanvasAWT's lifetime reference of (JAWTWindow) nativeWindow using updateGraphicsConfiguration() to determine the actual config values at addNotify(), it was overseen that the AWTGraphicsDevice needs to be re-validated. JAWTWindow's validateNative() ensures that the AWTGraphicsDevice reflects the platform native handle where required (X11).
* NativeWindow minor edits: Remove warnings (generics, imports, ..)Sven Gothel2011-11-104-26/+30
|
* NativeWindow: SurfaceChangeable::setSize() -> surfaceSizeChanged() to avoid ↵Sven Gothel2011-11-095-9/+10
| | | | | | | | | | | | conflicts with setSize() This fixes the NEWT OffscreenWindow conflict w/ setSize() which represents the action of changing the window's size. SurfaceChangeable's surfaceSizeChanged() merily notifies the actual size. JAWTWindow: Remove setSize() since it propagates the surface size upstream only. MacOSXJAWTWindow is not SurfaceChangeable complete (no surfaceSizeChanged).
* OS X Layered View: Part5 NEWT/AWT Interaction ; Fix NSOpenGLLayer pos ; CleanupSven Gothel2011-11-095-25/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Better JAWT* name for offscreen layer surface: - MacOSXCGLDrawableFactory, JAWTUtil, JAWTWindow, MacOSXJAWTWindow - FIXME: Need to get rid of the cached JAWT instance, in case we like to have dual usage of offscreenLayerSurface and onscreen. This would be done implicit by using NEWT .. hence low prio. AWTGraphicsConfiguration: - Fix create(): Use capsRequested for AWT aligned caps if capsChosen is null. (was capsChosen .. which is null) - Add updateGraphicsConfiguration() which allows to update the AWTGraphicsConfiguration. NewtFactoryAWT: - Add updateGraphicsConfiguration() .. entrypoint for AWTGraphicsConfiguration.updateGraphicsConfiguration() NSOpenGLLayer Impl: - For 'some reason' the layer's position is initially negative, fix it @ 1st 'draw' - Re-add CVDisplayLink OpenGL setting .. for what it's worth .. I don't know JAWTWindow: - Remove test setting: Only enable offscreenLayerSurface for applets if avail. (New unit test enables it seperatly) NewtCanvasAWT: - If NEWT child is offscreen, attach AWTMouseAdapter and AWTKeyAdapter to route these AWT input events to NEWT. - Don't loose-focus if NEWT child is offscreen. - Impl. NativeSurfaceHolder, NativeWindowHolder - NativeWindow is created at construction and it's GraphicsConfiguration updated at addNotify(..). - At addNotify/reparent: try harder to determine proper NEWT child size: - use preferred size if set - use minimum size if set - subtract insets from container size OffscreenWindow/WindowImpl: - Allow setSize() .. currently NOP for offscreen. - WindowImpl: Commented out recreate case for offscreen-setSize .. TEST: com.jogamp.opengl.test.junit.newt.parenting.TestParentingOffscreenLayer01AWT Passed tests: - GLCanvas - NewtCanvasAWT/OffscreenWindow
* OS X Layered View: Part3 JAWTWindow/MacOSXJAWTWindow (Java/Native)Sven Gothel2011-11-093-23/+80
| | | | | | | | | | | | | | | | JAWTWindow: - Add comment about caller of cstr, since it uses reflection - Field 'config' is of type AWTGraphicsConfiguration, validate and type it - Impl. NativeSurfaceHolder/NativeWindowHolder 'hooks' MacOSXJAWTWindow: - Use agnostic JAWTUtil.isJAWTVersionUsingOffscreenLayer() to determine 'isOffscreenLayeredSurface'. We may promote this notion to JAWTWindow, which already holds 'isApplet' - lockSurface() case 'isOffscreenLayeredSurface': - Create dummy NSWindow (OSXUtil) for getWindowHandle() - Fix chosen caps: offscreen
* Minor edits: remove redundanciesSven Gothel2011-11-091-3/+0
|
* NativeWindow: Add accessor interfaces NativeSurfaceHolder and NativeWindowHolderSven Gothel2011-11-096-2/+98
| | | | | | | | | | | | | | | | | - NativeSurfaceHolder interface allows access to it's implementation's NativeSurface reference. - NativeWindowHolder interface allows access to it's implementation's NativeWindow reference. Implement or extend interface w/ these accessors whereever it seems fit: - NEWT Window - GLDrawable These accessors allow lower layers to retrieve the NativeSurface/Window instance w/o knowledge of the 'upper' frameworks, ie. NativeWindow/JOGL or JOGL/NEWT. Commited in followups (due to mixed semantical changes in those files): - JAWTWindow - NewtCanvasAWT - Some NEWT impl.
* NativeWindow/JOGL: NativeSurface adds add/remove SurfaceUpdateListenerSven Gothel2011-11-065-5/+144
| | | | - SurfaceUpdateHelper contains impl. used by NativeSurface implementations.
* Impl layeredSurface (java/native):Sven Gothel2011-11-052-47/+130
| | | | | | | | - OSXUtil: NSView backing creation - OSXUtil: AttachJAWTSurfaceLayer - MacOSXCGLContext.create(): Attach NSOpenGLLayer if layered - MacOSXCGLDrawable.updateHandle(): if direct: add NSView backing layer - MacOSXCGLDrawable: Add getNSViewHandle() to distinguish between NSView and none (CGL/pbuffer)
* Cleanup ; JAWT* version flag setting based whetherSven Gothel2011-11-054-21/+34
| | | | | | | | | | Cleanup - use Platform OS_TYPE - .. JAWT* version flag - if JAWTWindow is Applet, attempt offscreenLayer if avail - ..
* MacOsX/JAWT_SurfaceLayers/CALayers: Kick off / JAWT_getAWT() CALAYER version ↵Sven Gothel2011-10-293-18/+88
| | | | support.
* OSX: Avoid invoking JNI or performSelectorOnMainThread in JNI if already ↵Sven Gothel2011-10-131-1/+5
| | | | mainThread
* OSX/SWT: Adding OSXUtil: RunOnMainThread(), IsMainThread() / Utilizing those ↵Sven Gothel2011-10-132-21/+54
| | | | | | | | | | | | | | for SWT access/calls Adding OSXUtil: RunOnMainThread(), IsMainThread() - Issuing a native call where the user Runnable is to be performed on the main thread - Enable query if we are on the main thread. Utilizing those for SWT access/calls - Using the above to call all SWT functions on the main thread if required (incomplete) TODO/Issues: - JOGL OSX CGL Context fails, ie expecting NS, but having CGL
* NEWT/OSX: Fix resize behavior / Cleanup coordinate transormation ↵Sven Gothel2011-10-131-0/+6
| | | | | | | | | | | | (client-space/top-level, child/parent) At resizing a perent window w/ a NEWT OSX child, the window position needs to be updated since it's absolute. Re-adding sending *Changed notifications via the appropriate WindowImpl methods. Turns out they are missing in some parent/child situations (fullscreen for example). Native getLocationOnScreen0(..) queries totalHeight by it's own to have correct values.
* NEWT/OSX: Fix erroneous child Window position and top-parent visibilitySven Gothel2011-10-111-1/+1
| | | | | | | | | | | | | | | | | - Regardless whether the window is a top-level or child window, we set it's position w/ absolut left-bottom coordinated. To do so even for an AWT parent component, we retrieve the screen position by traversing through the AWT tree and adding up each parent's rel. position, since the native view only reflects the AWT frame. Note: OSX does not use native views for each AWT component. - In case we reparent child -> top, we cannot orderOut() the ex parent, but need to just call orderBack(..), otherwise the whole ex-parent frame gets hidden. - In case we close a child window (and reparent child -> top), we need to remove the parent/child relation and orderOut(..) before close(..), otherwise the window artifact is left behind.
* DefaultGLCapabilitiesChooser: Add multisampling criteriaSven Gothel2011-10-011-1/+4
|
* Adapt to GlueGen's Lock ChangeSet: e4baba27507ce78e64a150ec6f69fb96f5721a34 ↵Sven Gothel2011-09-272-10/+8
| | | | ; Use generics
* NativeWindow/OSX: Add nativewindow_macosx lib and nativewindow.os.macosx.jar ↵Sven Gothel2011-09-253-2/+53
| | | | for 'GetLocationOnScreen()'
* Use new JNILIbLoaderBase addNativeJarLibs(all, atomic) for JOGL, ↵Sven Gothel2011-09-241-1/+7
| | | | NativeWindow and NEWT; no more LD_LIB_.. in setenv.sh for test scripts
* Use Platform's initSingleton() instead of JVMUtil's (private package) ; Use ↵Sven Gothel2011-09-232-16/+15
| | | | TempJarCache if used.
* Proper usage of loadLibrarySven Gothel2011-09-211-2/+2
|
* NEWT Cleanup: AWT driver fix, WindowImpl createNative .., minor editsSven Gothel2011-09-161-1/+1
| | | | | | | | | AWT driver fix - setVisible at creation, using reconfigureWindow impl (fixed WindowImpl createNative .., - no double visibility check on creation - visible:=true anyway for later creation, if failed or not available yet
* Fix X11/Translucency (NV): Don't enable GLX.GLX_TRANSPARENT_TYPE; Always ↵Sven Gothel2011-09-141-3/+4
| | | | | | | | | | | | | | | | chooseConfig if translucent Don't enable GLX.GLX_TRANSPARENT_TYPE (X11) - if enabled, NV driver results in odd transparency effect (very high transparency) Always chooseConfig if translucent (X11) - recommended idx shall stay -1 if translucent, allowing our default chooser to pick up the proper config. this was previous reached due to the unavailable GLX_TRANSPARENT_TYPE request, which is now removed (see above) Allow translucency for non FBConfig, XVisual's only
* X11Util: Catch X11 Error on XCloseDisplaySven Gothel2011-09-091-3/+16
|
* X11Util/Display Lifecycle: Reuse pending (unclosable) Display connectionsSven Gothel2011-09-061-46/+83
| | | | | | | See commit 9ed513e9a9616f6028084df4c650c8caf31ea49d (bug 502) Since we cannot close Display connections (X11/AMD), at least we reuse them to not bloat the memory for long term applications
* NativeWindow/NEWT: Cont. refinement of Insets usageSven Gothel2011-09-062-6/+10
| | | | Completes commit d4670328991c02a6f11f8873ea7a2331f17d0ef0
* NativeWindow/NEWT: Refine Insets definition for size and position, read and ↵Sven Gothel2011-09-043-4/+47
| | | | write access
* Unify Immutable/WriteCloneable Usage ; Remove Clonable for ImmutableOnly typesSven Gothel2011-09-048-21/+29
|
* NativeWindow: Add new Insets/InsetsImmutableSven Gothel2011-09-042-0/+161
|
* Remove prev. Insets implSven Gothel2011-09-041-112/+0
|
* NativeWindow/JOGL: Cleanup Caps doc and implicit related values.Sven Gothel2011-09-041-24/+27
| | | | | | | | | Capabilities setBackgroundOpaque -> setAlphaBits GLCapabilities setOnscreen <-> setPBuffer setSampleBuffers -> setAlphaBits
* Complete translucency support (core w/ X11 (only) - tested w/ NEWT)Sven Gothel2011-09-031-4/+4
| | | | | | | | | | | | | | | | | DefaultGLCapabilitiesChooser: - Add penalty for opaque mismatch: dbl-buf > opaq > stencil GLGraphicsConfigurationFactory: - Case no-chooser && has-recommended-idx: - Only use recommended index if caps is opaque, otherwise use default chooser to validate translucency NativeWindow Capabilities: - transparent default values -> 0 Added NEWT Test: TestTranslucencyNEWT Added command line translucency/undecorated options for TestGearsES2NEWT
* X11Util.createDisplay() -> X11Util.openDisplay(): Better name match to ↵Sven Gothel2011-08-311-1/+1
| | | | XOpenDisplay/XCloseDisplay
* Workaround for X11/ATI fglrx bug 515 - Multiple Display ConnectionsSven Gothel2011-08-311-1/+27
| | | | https://jogamp.org/bugzilla/show_bug.cgi?id=515
* JAWTWindow.getLocationOnScreen(): Add proper JAWT lockSurface() ; X11Util: ↵Sven Gothel2011-08-302-28/+33
| | | | | | | | | use System.err ; TestParenting02AWT: use GearsES2 JAWTWindow.getLocationOnScreen() - Add proper JAWT lockSurface() - Turns out that the parent location query of a NEWT child to an [J]AWT window didn't lock the window
* Workaround (Fix) for Bug 502: Multithreading issue w/ libX11 1.4.2 and ↵Sven Gothel2011-08-301-14/+4
| | | | | | | | | | | | | | | | | | | | | libxcb 1.7 bug 20708 See https://jogamp.org/bugzilla/show_bug.cgi?id=502 Since the libX11/xcb code doesn't seem to be fixed anytime soon a better usable workaround is required than using a system property to enable 'over locking'. It turns out that the race condition is related to the parallel X11 Display connection usage of GLX/OpenGL and event dispatching. This workaround utilizes 2 X11 Display handles, one for windowing/OpenGL and one for event dispatching. This approach allows us to cont. multithreading use w/o locking the display and works on both implementations, the old bug-free libX11 and the 'new' buggy one. Downside is the little resource overhead of the 2nd X11 Display connection .. well. - Removes the property: 'nativewindow.x11.mt-bug'
* Misc Rename/Reloc; GLArrayData*/PMVMatrix enhancments; Test fixes/adds ↵Sven Gothel2011-08-227-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (GearsES1/ES2) rename/reloc: - javax.media.nativewindow.util: DimensionReadOnly -> DimensionImmutable PointReadOnly -> PointImmutable RectangleReadOnly -> RectangleImmutable unified 'immutable' name as used within jogamp already - remove array handler from public API com.jogamp.opengl.util.GL*ArrayHandler -> jogamp.opengl.util.GL*ArrayHandler - GLArrayData: Clarify method names getComponentNumber() -> getComponentCount() getComponentSize() -> getComponentSizeInBytes() getElementNumber() -> getElementCount() getByteSize() -> getSizeInBytes() - FixedFuncPipeline: Moved def. array names to GLPointerFuncUtil enhancement: - GLArrayDataServer: Add support for interleaved arrays/VBO - GLArrayData*.createFixed(..) remove 'name' argument (non sense for fixed function) - PMVMatrix: - one nio buffer - removed 'Pmv' multiplied matrix - removed 2x2 cut down 'Mvi' normal matrix (use 4x4 Mvi) - tests: - RedSquare -> RedSquareES1/RedSquareES2 - Gears ES1 fixed + ES2 added. Both work properly and share common Gears VBO construction - Added TestMapBuffer01NEWT, testing glMapBuffer
* deployment resturcturing: combine nativewindow/jogl/newt ; newt: 'driver' ↵Sven Gothel2011-08-051-1/+4
| | | | | | | | | | | | | | | | | | | | | separation ; android cleanup remaining all-in-one jnlp's / jars: jogl-all-awt.jnlp -> jogl.all.jar jogl-all-noawt.jnlp -> jogl.all-noawt.jar jogl-all-mobile.jnlp -> jogl.all-mobile.jar native for all above: jogl-all-natives-linux-amd64.jar jogl.all-android.apk jogl.all-android.jar more may follow for each supported platfrom ++++ - newt: proper 'driver' separation - all drivers reside now in jogamp.newt.driver.* - remove intptr.cfg / use gluegen's
* Revert commit 96cbe03a943f3189531a7ec9baf680bdf1417929: Capabilities: ↵Sven Gothel2011-08-011-3/+3
| | | | default rgb 555 -> 888 ; Turns out such a default value change would cause too many regressions
* NativeWindow Capabilities: rgb -> 555, allows using low profile devicesSven Gothel2011-07-311-3/+3
| | | | | All GLCaps chooser will pick the highest available pixelformat, so if 32bpp is available rgba8888 will be used anyways.