aboutsummaryrefslogtreecommitdiffstats
path: root/src/nativewindow/native
Commit message (Collapse)AuthorAgeFilesLines
* Bug 599 - FBObject / Offscreen Support - Part 1Sven Gothel2012-07-191-31/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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
* C code: remove warningsSven Gothel2012-07-061-4/+4
|
* NativeWindow/Newt X11ErrorHandler enhancement / unification - don't throw ↵Sven Gothel2012-07-054-105/+167
| | | | | | | | | | | | 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.
* Fix Bug #589 (JAWT Offscreen-Layer resize) and Offscreen-Layer ↵Sven Gothel2012-06-301-13/+16
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* Bug 577: Disable debug message XInitThreads() called (only enabled in native ↵Sven Gothel2012-04-261-2/+2
| | | | debug mode).
* NativeWindow public* reorg 3/3 ; NativeVisualID -> VisualIDHolder incl. ↵Sven Gothel2012-03-061-3/+3
| | | | | | | | | | | | | | | | | | | | | | proper utilization. - VisualIDHolder: Update documentation (Exception case, etc) - NativeVisualID -> VisualIDHolder (public) - incl. generic Comparator - better doc and enum values - VID_UNDEFINED == 0 - methods shall not throw exception, but return UNDEFINED - CapabilitiesImmutable extends VisualIDHolder - All Capabilties impl. - use VID_UNDEFINED for undef. value - use final private (immutable) fields - AbstractGraphicsConfiguration extends VisualIDHolder - X11 CreateDummyWindow takes (int) visualID
* NativeWindow: Relax Xinerama dependency / Rename Windows impl subfolder to ↵Sven Gothel2012-02-276-89/+156
| | | | | | | common name win32 (same as stub_include) Utilizing dlopen/dlsym in an efficient way relaxes the platform requirement of having Xinerama available. This allows using Nokia N9 MeeGo out of the box.
* OSX CALayer fix for Java7 (force CALayer to 0/0, always remove all animations)Sven Gothel2012-02-131-1/+4
|
* NativeWindow/OSX: Fix Offscreen CALayer SIGSEGV @ Shutdown (Cleanup referencing)Sven Gothel2012-01-191-7/+41
| | | | | | | | | | - allocate CALayer w/ invoking init: [[CALayer alloc] init] - attach CALayer to JAWTSurfaceLayer w/o autorelease: surfaceLayers.layer = layer; // already incr. retain count - destroy CALayer @ JAWTWindow destroy
* NEWT/OSX CALayer Animation Fix: Use '[layer removeAllAnimations]', '[layer ↵Sven Gothel2012-01-161-5/+5
| | | | removeAnimationForKey: kCAOnOrderIn, kCAOnOrderOut, kCATransition]' doesn't work
* JAWT_DrawingSurface.c: Fail fast in case of NULL platformInfo or ↵Sven Gothel2011-12-181-0/+7
| | | | sizeof(platformInfo)==0
* Fix 96205926731aeb61a862c87974f611d814937c54 GDIUtil native code.Sven Gothel2011-12-011-1/+1
|
* Complete commit 2c0a0981f7e1376064abd981c79c65c9d1b57410 ; Missed native impl.Sven Gothel2011-12-011-17/+17
|
* MacOSX: Disable native verbositySven Gothel2011-11-261-1/+1
|
* OSX GLLayer (native): Remove CALayer add/remove/swap sublayer animation; Fix ↵Sven Gothel2011-11-261-14/+21
| | | | | | | DestroyNSWindow0 The CALayer animations (add/remove/swap) confused somewhat rendering (layer position) and even triggered a deallocation sometimes.
* X11Util.shutdown(): Remove x11IOErrorHandlerSven Gothel2011-11-261-0/+5
|
* NativeWindow X11 Locking: Fix XInitThreads/XLockDisplay/XUnlockDisplay Usage ;Sven Gothel2011-11-251-1/+4
| | | | | | | | | | | | XLockDisplay/XUnlockDisplay shall only be used if XInitThreads() was successful, otherwise it has no effect (X11 spec). - Only issue XInitThreads() if firstX11ActionOnProcess==true, store result to determing whether we can utilize XLockDisplay/XUnlockDisplay. - If we cannot utilize XLockDisplay/XUnlockDisplay, use RecursiveLock - NativeWindowFactory: Only return AWTToolkitLock or X11JAWTToolkitLock if explicitly requested
* Fix OS X JAWT SIGSEGV @ NEWT Window creation ; Reloc ↵Sven Gothel2011-11-181-24/+25
| | | | | | | | | 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).
* OS X Layered View: Part7 Allow NEWT onscreen MacWindow to be used incl ↵Sven Gothel2011-11-111-2/+3
| | | | | | reparenting Test: enable NEWT 'onscreen' case
* Minor edits: Remove dead code / fix dbg printfSven Gothel2011-11-111-1/+1
|
* OS X Layered View: Part6 (native) Using a root CALayer where we ↵Sven Gothel2011-11-101-1/+101
| | | | | | | | | | | | | | | | | 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)
* OS X Layered View: Part3 JAWTWindow/MacOSXJAWTWindow (Java/Native)Sven Gothel2011-11-091-0/+53
| | | | | | | | | | | | | | | | 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
* OS X Layered View: Use pbuffer method (pbuffer w/ dbl buffer)Sven Gothel2011-11-061-4/+4
| | | | | | | | | - attributes +NSOpenGLPFANoRecovery +NSOpenGLPFAAccelerated - use SurfaceUpdateListener() to notify layer - swapBufferImpl() adapt to 0038e2d41825c22bdd18a7b86a8229a3fab674a3 - pbuffer: don't enforce POT tex-size to surface size, but pbuffer only - FIXME: Check POT pbuffer/tex-size for X11/Win32/.. ! -
* OSX: CGL type cleanup ; layeredSurface impl.Sven Gothel2011-11-051-3/+62
| | | | | | | | | - Use proper OSX types for NS/CGL prototypes (gluegen) and impl. - Impl layeredSurface (native): - OSXUtil: NSView backing creation - OSXUtil: AttachJAWTSurfaceLayer - CGL: NSOpenGLLayer type impl. and hook
* Nativewindow/OSX: GetLocationOnScreen() must use [win frame] for window height.Sven Gothel2011-10-291-3/+7
|
* Fix Solaris gcc args ; Cleanup dependencies and linker args; Adding JVM arch ↵Sven Gothel2011-10-182-4/+4
| | | | | | | | flags (-d32/-d64) ; glxext.h uses 'gl-64bit-types.h' Cleanup dependencies and linker args - JOGL/NEWT: remove Xxf86vm dependency - NativeWindow Solaris: Use std 'Xinerama' and 'xf86vmode'
* OSX/SWT: Adding OSXUtil: RunOnMainThread(), IsMainThread() / Utilizing those ↵Sven Gothel2011-10-133-1/+131
| | | | | | | | | | | | | | 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
* NativeWindow/OSX: Use screen of windowSven Gothel2011-10-121-3/+2
|
* OSX Minor Cleanups: ctx delete note (freeze when shared ctx), Better ↵Sven Gothel2011-10-121-1/+1
| | | | MainThread Thread name[s]
* Fix Nativewindow GetLocationOnScreen OSX impl. - Transform OSX origin ↵Sven Gothel2011-10-121-3/+14
| | | | bottom-left to our top-left origin.
* NativeWindow/OSX: Add nativewindow_macosx lib and nativewindow.os.macosx.jar ↵Sven Gothel2011-09-251-0/+106
| | | | for 'GetLocationOnScreen()'
* WindowsDWM: Check all methods for availability - Cleanup headerSven Gothel2011-09-042-9/+2
|
* Complete translucency support for Win32 - tested w/ NEWTSven Gothel2011-09-042-0/+134
| | | | | | | https://jogamp.org/bugzilla/show_bug.cgi?id=517 - Adding some Windows DWM entries to GDI (manual) for translucency support - Add translucency setting in WindowsWGLGraphicsConfiguration*
* revert: a7340fd941b26d633c438cb5adb22f2c30a5cff0Sven Gothel2011-08-311-5/+4
| | | | NativeWindow X11 Error Handler: If quiet do not print message on stderr.
* NativeWindow X11 Error Handler: Even if quiet, print message on stderr.Sven Gothel2011-08-311-3/+5
|
* AWT/X11 Reduce XQueryExtension 'hang' ; Impl. use XineramaIsActive() instead ↵Sven Gothel2011-08-011-8/+9
| | | | | | | | | | of XineramaQueryScreens() - Reenable creating own XDisplay for AWT components, which reduces/removes hang in subsequent XQueryExtension call (fetchScreens .. XineramaEnabled()) - Impl. use XineramaIsActive() instead of XineramaQueryScreens() Reducing memory allocation, XFree call (which was missing anyways)
* X11 Nativewindow/NEWT: X11 Error Handler (JNIEnv query for thread, stack ↵Sven Gothel2011-06-261-12/+57
| | | | | | | | | trace), cleanup - X11 Error Handler: if throwing JVM stack trace or fatal JVM error query proper JNIEnv for running thread and attach thread to JVM if necessary. - NEWT/X11: Proper XEvent polling documentation, cleanup window creation event mask
* Utilize GlueGen's platform independent header for stdin.h, gluegen_stdint.h, ↵Sven Gothel2011-06-112-18/+2
| | | | | | | .. (remove local copy) - Use them for gluegen code generation - Use them for native compilation (cc)
* NativeWindow/X11: Simple cleanup/generalization ..Sven Gothel2011-04-261-5/+16
|
* Move implementation private files from com.jogamp.<module>.impl. to ↵Sven Gothel2011-02-093-43/+43
| | | | | | | | | | | | | | | jogamp.<module> (2/2) - edit files - com.jogamp.opengl.impl -> jogamp.opengl - com.jogamp.opengl.util.glsl.fixedfunc.impl -> jogamp.opengl.util.glsl.fixedfunc - com.jogamp.nativewindow.impl -> jogamp.nativewindow - com.jogamp.newt.impl -> jogamp.newt This sorts implementation details from the top level, ie skipping the public 'com', allowing a better seperation of public classes and implementation details and also reduces strings. This approach of public/private seperation is also used in the OpenJDK.
* Windows RegisterClass: Use new RegisteredClassFactory (window class), Misc.Sven Gothel2010-12-124-110/+229
| | | | | | | | | | | | | | | | | This solves the issue when an applet is started/stop and started again, or another applet runs in the same JVM. Also soves the issue for multiple JVMs. RegisteredClassFactory can be instanced to manage one shared window class, currently in use for GDI's dummy window and NEWT. A class base name and a window proc handle must be passed in the factory cstr. Before registering, the class is tested if already exists, eg another applet in the same JVM. If registration fails, the class name will iterate until successful or MAX_INT reached, eg if multiple JVMs are running. Added NativeWindow Common Native Code.
* GDI: Fix CreateDummyWindow: Use local getModuleHandle(NULL) and synchronize ↵Sven Gothel2010-12-091-30/+33
| | | | factory method.
* X11 DummyWindow: Pass size and set size in proxySven Gothel2010-12-041-6/+5
|
* NativeWindow/Windows: Fix CreateDummyWindow gluegen and usageSven Gothel2010-11-221-1/+1
| | | | NativeWindow+JOGL/Windows: Complete Opaque types
* Moving NEWT X11Window GetRelativeLocation() native implementation to ↵Sven Gothel2010-11-171-14/+62
| | | | NativeWindow X11.
* Move GDI GlueGen wrapping from JOGL -> NativeWindow (following X11). Moving ↵Sven Gothel2010-11-171-0/+152
| | | | NEWT WindowsWindow GetRelativeLocation() native implementation to GDI as well.
* X11: Make X11 error handler quiet where we expect an X11 error, ie OpenGL 4 ↵Sven Gothel2010-11-161-4/+8
| | | | not available ..
* NEWT: Add optional eager native initialization ; Proper exception handlingSven Gothel2010-11-141-0/+6
| | | | | | | | | | NEWT: Add optional eager native initialization of Display and Screen to overcome a possible chicken/egg situation. This is useful to be able to request the AbstractGraphicsDevice, via getGraphicsDevice(). Otherwise the abstract device won't be available before the dependent components (Screen and Window) are realized. Throw NativeWindowException in case native creation failed.
* Removed no more used (see f47e8be170731d75a8b6002621a1541f90160465) and ↵Sven Gothel2010-11-081-222/+0
| | | | prorietary extutil.h
* Remove ancient DEC licensed file, use std X11 Xinerama extension instead.Sven Gothel2010-11-045-652/+5
|