summaryrefslogtreecommitdiffstats
path: root/src/newt/classes
Commit message (Collapse)AuthorAgeFilesLines
* - Fix GLProcAddressResolver regression: Use GLProcAddressResolver !Sven Gothel2010-04-275-117/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | - X11GLXDrawableFactory: - Move shared resource creation/destruction into it's own thread - Remove the ATI hack (no XDisplay closing) for every Display, this is only necessary for the shared XDisplay and in case of AWT. - Newt - Display: Only pumpMessages if device is ready. - X11Display: Verify handle not null at DispatchMessage. - Common recursive ToolkitLock implementation, from src/nativewindow/classes/com/jogamp/nativewindow/impl/LockingNativeWindowFactory.java and src/newt/classes/com/jogamp/newt/Window.java, -> com.jogamp.nativewindow.impl.RecursiveToolkitLock - Unique XLockDisplay/XUnlockDisplay call via X11Util to simplify debugging. X11Util: Added debug code for XLockDisplay/XUnlockDisplay. Added fast LongObjectHashMap Added static lib loading and initialization. Removed active and passive list, as well as unused methods, to easy maintenance. Possible since the only 'uncloseable' Display might be the shareable one. - X11Lib: Added static initialization via X11Util Test: junit/com/jogamp/test/junit/jogl/demos/gl2/gears/TestGears* - Add WindowListener for quit ..
* NEWT: Add missing return in recursive lock; Add MacOSX EVENT_KEY_TYPEDSven Gothel2010-04-241-0/+1
|
* NEWT CleanupSven Gothel2010-04-2442-81/+284
| | | | | | | | | | | | | - Moved all implementation details (awt/x11/windows/macosx/..) to com.jogamp.newt.impl - Moved awt event handling com.jogamp.newt.awt.event -> com.jogamp.newt.event.awt - NEWTEvent extends java.util.EventObject - NEWTEventListener extends java.util.EventListener - Added Trace*Adapter, logging the event, incl. the time lag
* NEWT/AWT InteroperabilitySven Gothel2010-04-2424-286/+948
| | | | | | | | | | | | | | | | | | | | | | | - Moved all event classes to com.jogamp.newt.event and the new AWT event helper to com.jogamp.newt.awt.event - Added Newt<Type>Adapter for convenience - Added AWT<Type>Adapter for - Using AWT agnostic NEWT event listener see com.jogamp.test.junit.jogl.demos.gl2.gears.TestGearsNEWT even for AWT see com.jogamp.test.junit.jogl.demos.gl2.gears.TestGearsAWT (Nice idea by mbien) - Forwarding AWT events to NEWT (refactoring) Misc - GLDrawableFactory.shutdown() is now protected and called by the JVM shutdown hook. Hence removing the validate().
* Moved event classed from com.jogamp.newt to com.jogamp.newt.eventSven Gothel2010-04-2411-35/+43
|
* Newt.AWTWindow: Set/Unset windowHandle (enables actual destroy call) / minor ↵Sven Gothel2010-04-232-15/+33
| | | | debug stuff
* Merge branch 'master' of github.com:mbien/joglSven Gothel2010-04-231-1/+1
|\
| * Merge branch 'master' of github.com:mbien/joglMichael Bien2010-04-231-1/+6
| |\
| * | reviewed calls to lockSurface() and ensured propper unlocking.Michael Bien2010-04-231-1/+1
| | |
* | | Reuse recursive locking codeSven Gothel2010-04-231-37/+38
| |/ |/|
* | Add missing finally unlock, if 2nd lock failsSven Gothel2010-04-231-1/+6
|/
* JOGL GL4 preperation (cont):Sven Gothel2010-04-2010-15/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - All available OpenGL versions (native/platform) are verified at GLProfile initialization and can be queried .. A mapping of major,compat -> major,minor,options is created. - Removal of temp context creation, when creating a context. This was necessary to query general availability of ARB_create_context. Due to the shared context of X11GLXDrawableFactory and WindowsWGLDrawableFactory, this is no more necessary. Due to the version mapping, the ARB_create_context paramters are known. - NativeWindow X11Lib: Added X11ErrorHandler, throwing a RuntimeException. Necessary to catch BadMatch .. etc X11 errors, eg for glXCreateContextAttribsARB Hence all X11 calls are covered now. - X11DummyGLXDrawable needs to use an own Window, otherwise GLn n>2 fails - Flattening the desktop GL* implementation, all use GL4bcImpl, which reduces the footprint dramatically. - GL*Impl.isGL*() (desktop) utilizes the GLContext.isGL*(), hence the results reflect the actual native context version. - GLContextImpl makeCurrent/create: Added workflow documentation, clarified code, defined abstract methods to have a protocol. - Removed moved files (from here to gluegen), see gluegen a01cb3d59715a41153380f1977ec75263b762dc6 - NativeLibLoader -> <TYPE>JNILibLoader - Fixed Exception Handling (as in gluegen bce53b52c8638729750c4286dbc04cb14329fd34), ie removed empty catch Throwable .. - GLContext.setSwapInterval(): Nop in offscreen case, otherwise X11IOError (NVIDIA Bug) Test: Tests - Junit - demos.gears.Gears - demos.jrefract.JRefract Platforms - Linux 64/32 ATI/NVidia - MacOsX - Windows (virtualbox 3.1.6, offscreen failed) TODO/BUGS: - FIXME ATI GLn n>2 with AWT, can't make context current, works well on NVIDIA though - FIXME GL3GL4: Due to GL3 and GL4 implementation bugs, we still choose GL2 first, if available! - Add GL 3.3 to GL3/gl3ext.h - Add GL 4.0 to GL3/gl3ext.h and fix the GL3/GL4 seperation - Rename jogl.gl2.jar -> jogl.gldesktop.jar (as done with it's native lib already)
* Further ATI (fglrx) X11Display bug workaround/cleanupSven Gothel2010-04-151-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - See https://bugzilla.mozilla.org/show_bug.cgi?id=486277 - Calling XCloseDisplay occasionally leads to a SIGSEGV, even thought the reference is valid and OK. Workaround is not to close any X11Display, but to hold them stashed and reuse them. Since we already pipeline all X11Display's via Nativewindow's X11Util, an added referenceCounter and a global active/passive list solved this problem. This workaround is only active in case 'isVendorATI()'. NEWT/NativeWindow X11: - Let XIOErrorHandler and invalid display references fail hard with FatalError, otherwise we won't see the stack trace - and those bugs are indeed fatal. NativeWindow X11: - Install XIOErrorHandler, which stays active. - X11Util.X11Display: - Add reference counter - Add global active/passive list. Passive if reference count == 0 and marked as 'un-closeable' (-> ATI). Reusing passive members when create a new display. - JOGL: - Use DeleteLocalRef() calls to free temp NIO buffer in manual *Copied implementation. - GLDrawableFactoryImpl: Be serious about the shutdown() semantics - *GraphicsConfiguration: - Fix the invalid Onscreen/PBuffer/Pixmap determination (X11/EGL/WGL) - Just return null if not valid - X11GLXGraphicsConfigurationFactory - FBConfig - Determine recommendedIndex properly .. - Don't bail out if a FBConfig is invalid .. - Use Chooser in case nothing is recommended .. - X11OffscreenGLXDrawable fixes bugs: - wrong (int) cast of parent window in XCreatePixmap call - setting display to zero too early in destruction, ie before XCloseDisplay - X11GLXDrawableFactory is using [singleton] shared dummy resources for - Screen, Drawable and Context which are utilized in case they are needed .. They are removed at shutdown call - GLXVersion gathering in GLXUtil now .. - DefaultGLCapabilitiesChooser: Respect PBuffer selection Tests: - Add DrawableFactory shutdown() - Add various Offscreen Capabilties - Add Offscreen and non-pbuffer case - JUnit Passed (Linux64bit: NVidia/ATI) - demos.jrefract.JRefract passed (Linux64bit: NVidia/ATI)
* NEWT X11 Fix (mainly ATI and multithreading)Sven Gothel2010-04-134-98/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | - EventDispatchThread -> EDTUtil Since the name leads to the assumptions that an instance is the EDT. EDTUtil manages the EDT within. - EDTUtil, no more reference to Display, but use a Runnable for the pumpMessage() - Window.destroy() check if already done - X11Window: Added XErrorHandler to catch BadWindow and BadAtom while dispatching events - it is possible that the resource is already freed. Also added an XIOErrorHandler to identify the fatal Display* inaccessibility. Tests: - New junit/com/jogamp/test/junit/newt/TestWindows01NEWT.java Testing creation/destruction and double destruction (error case) - Fix: src/junit/com/jogamp/test/junit/jogl/offscreen/TestOffscreen01NEWT.java Properly holding all NEWT references .. Misc: - Reduced redundant NEWT 'toString()' output (*Capabilities, ..) -
* Fix NEWT Window destroy/close race condition,Sven Gothel2010-04-093-56/+93
| | | | | | | | where a programatic window.destroy() call from thread 1 triggers a destroy() call via the native windowing toolkit via windowDestroyNotify(). It has to be checked/locked if a destroy is in progress, otherwise they could deadlock (OSX and Win32).
* fixed a bunch of javadoc warnings.Michael Bien2010-03-291-2/+3
|
* moved com.jogamp.javafx.* to com.jogamp.*.Michael Bien2010-03-2944-152/+145
|
* final large refactoring to move to com.jogamp.*.Michael Bien2010-03-2844-155/+155
|
* refactoring part 4 (remaining files): renamed com.sun.opengl -> ↵Michael Bien2010-03-275-5/+5
| | | | com.jogamp.opengl.
* X11 Display Lock completed (hope so)Sven Gothel2009-10-126-78/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - JOGL GLXUtil - JOGL X11GLXDrawableFactory - JOGL X11GLXGraphicsConfigurationFactory - JOGL X11OffscreenGLXDrawable - NW X11GraphicsConfigurationFactory NEWT Display - Stop EDT immediatly from within EDT when destroying - NEWT Window - Remove obsolete 'disposeSurfaceHandle()' NEWT GLWindow destroy(): - Deep destruction (Window, Screen and Display) if owner, otherwise just the GLWindow/GLDrawable - Add 'sendDisposeEvent' flag, to allow avoiding sending dispose to all GLEventListeners in a critical shutdown, ie from within the browser. NEWT EDT - More fine grained locking - unlocked while event dispatching - double check locking - Fixed cases where we are running on the EDT ..
* NEWT X11 Display Lock:Sven Gothel2009-10-114-23/+13
| | | | | | | | | | | | | | | Integrate Display.lock/unlock, so the generic Window will call it. Specialized for X11Display, the only real impl of it. Fixes offscreen EDT usage .. GLProfile: Add isAWTAvailable() and isAWTJOGLAvailable() TextureIO: - Add NetPbmTextureWriter - Only use IIOTexture* if !isAWTJOGLAvailable() - Add write (TextureData, File)
* NEWT: Avoid NPE at destroy() ; DEBUG println ..Sven Gothel2009-10-102-4/+20
|
* NEWT: Add EventDispatchThread (EDT) pattern.Sven Gothel2009-10-1013-334/+530
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to limitations on Windows, we need to standardize the one thread for - window creation, and - event dispatching This was already mentioned in the previous implementation but while integrating into another threading model (Plugin3), it turned out that manual managing the thread is too much of a burden. NEWT now uses a EDT per Display and Thread as the default, where Display creation, Window creation and event dispatching is 'pipelined' into. This can be switched off: NewtFactory.setUseEDT(boolean onoff); and queried via: NewtFactory.useEDT(); Note this EDT impl. does not implicate a global lock or whatsoever. The experimantal semantics of a current GL context for input event dispatching is removed, i.e. the GL context is no more made current for mouse/key listener. This reduces the complexity and allows the proper impl. of the external dispatch via EDT .. for example. Removed: GLWindow: setEventHandlerMode(int) .. etc X11Display: XLockDisplay/XUnlockDisplay needed to be utilized to allow the new multithreading (EDT/Render) Display usage. X11Window: lockSurface/unlockSurface locks X11Display as well .. +++++ NEWT: 'getSurfaceHandle()' semantics changed. To allow usage of the surfaceHandle for OS where it is allocated thread local (MS-Windows), it shall be aquired/released while lockSurface/unlockSurface. This is done in the Windows Window implementation. GLWindow can no more query 'getSurfaceHandle()' to verify if 'setRealized()' was successful. NEWT: Window surface lock is recursive and blocking now, as it shall be.
* Fix On-/Offscreen and PBuffer.Sven Gothel2009-10-051-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Demos are working again: demos.jrefract.JRefract - X11, Win32, OSX -Dsun.java2d.opengl=true demos.jrefract.JRefract - X11, Win32 demos.readbuffer.Main [-GL2,-GL2ES1] -test 0 demos.es1.RedSquare - X11, Win32, OSX, EGL demos.readbuffer.Main [-GL2,-GL2ES1] -test [12] demos.es1.RedSquare - X11, Win32 - OSX not, because of the missing feature of attaching a read surface. - EGL not, because the emulation I used didn't support attaching a read surface. Emulation bug .. probably .. MacOSXWindowSystemInterface.m createContext(): - Verify if passed surface handle _is_ a view, now it could be a pbuffer etc .. handle as well. Cleanup GLDrawableImpl.setRealized(boolean realized) - Calls setRealizedImpl() (implementation) now, and only if new stated differs .. - setRealizedImpl() fixed for: MacOSXPbufferCGLDrawable: recreate/destroy WindowsOffscreenWGLDrawable: recreate/destroy WindowsPbufferWGLDrawable: no-recreate/destroy X11OffscreenGLXDrawable: recreate/destroy X11PbufferGLXDrawable: recreate/destroy WindowsWGLContext: - wglMakeContextCurrent(): uses isFunctionAvailable .. - create(): Uses WGL.MakeCurrent() and releases the created context, due to unavailable MakeContextCurrent extensions before updating the procaddress tables.
* GLDrawableFactory Cleanup (-> On- Offscreen and PBuffer)Sven Gothel2009-10-052-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | - Base all PBuffer/Offscreen GLDrawable creators on a prev. created 'NativeWindow + SurfaceChangeable' instance. Simplifies implementation path. This also removes the almost cyclic referencing of GLWindow -> OffscreenWindow GLWindow -> Drawable -> NullWindow -> OffscreenWindow Now it is just GLWindow -> OffscreenWindow GLWindow -> Drawable -> OffscreenWindow - createGLDrawable() shall be used for all types now, especially if you want to pass the offscreen NativeWindow and benefit from the surfaceChangedListener etc .. - Add public createOffscreenDrawable(..) - EGLDrawable: - Query surface only if not 0 - [re]create surface only if needed, using 'ownEGL*' flag for destruction only.
* Fix Config: Set doublebuffer:=false if offscreen; NEWT: Fix KDWindow.Sven Gothel2009-10-041-1/+1
|
* NativeWindow extends SurfaceUpdatedListener for 'surfaceUpdated' ↵Sven Gothel2009-10-033-54/+17
| | | | propagation. GLDrawableFactory.createGLDrawable() propagates NativeWindow to offscreen NullWindow.
* surfaceupdated:: NativeWindow: passing 'updater'; NEWT: adding event listenerSven Gothel2009-10-034-14/+105
|
* Offscreen/PBuffer capabilities cleanup ; Generic read drawable supportSven Gothel2009-10-031-0/+7
|
* NEWT: Offscreen integrationSven Gothel2009-10-022-1/+95
|
* NEWT Intel GDL: Proper Pos/Size/FullscreenSven Gothel2009-10-021-16/+54
|
* NEWT Intel GDL: Surface Size tuning .. ; Add missing getSurfaceHandle()Sven Gothel2009-10-021-2/+8
|
* NativeWindowFactory:Sven Gothel2009-10-0210-68/+381
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - If property 'nativewindow.ws.name' is set, use it as the custom windowing type returned by getNativeWindowType(true) NEWT: - Using NativeWindowFactory's property 'nativewindow.ws.name' as a package name for custom NEWT windowing imlementations, ie: -Dnativewindow.ws.name=com.sun.javafx.newt.intel.gdl -Dnativewindow.ws.name=com.sun.javafx.newt.broadcom.egl This allows far more flexibility to add custom impl. - Add Intel-GDL, define property 'useIntelGDL' to build the native part. Intel GDL is impl in the package 'com.sun.javafx.newt.intel.gdl' JOGL: - All impl. of 'createGLDrawable(..)', which were actually creating onscreen drawable only, were renamed to 'createOnscreenDrawable(..)'. - GLDrawableFactoryImpl impl. 'createGLDrawable(..)' now and dispatches to the actual create* methods in respect to the Capabilities, ie onscreen, pbuffer and offscreen. - GLDrawableFactory: - If using a native ES profile -> EGLDrawableFactory - If existing native OS factory -> Use that .. - Else -> Use EGLDrawableFactory, if available
* NEWT: Fix X11 ConfigureEvent ; X11Window don't propagate pos change if parentedSven Gothel2009-09-291-13/+25
|
* NEWT AWT: Use size/pos from external frameSven Gothel2009-09-141-0/+4
|
* NEWT: More elegant custom constructor type verification and setting by ↵Sven Gothel2009-09-142-34/+107
| | | | Window class impl. ; AWTWindow allow pure Container in cstr, ie an Applet
* Newt.AWT: avoid npeSven Gothel2009-09-131-2/+4
|
* NEWT: remove redundant test codeSven Gothel2009-09-131-3/+0
|
* NEWT: native parenting Win32 OKSven Gothel2009-09-131-6/+11
|
* Newt: MacOSX child clipping tests (failed)Sven Gothel2009-09-121-2/+2
|
* Newt: native window parenting MacOSX: OK (but parent clipping is missing) ; ↵Sven Gothel2009-09-123-19/+30
| | | | X11: windowResize event handled
* NEWT: Native window parenting (X11: OK); AWTWindow external Frame OKSven Gothel2009-09-124-16/+73
|
* NEWT: Basic/Naive window parenting support ; NEWT GLWindow: remove ambigous ↵Sven Gothel2009-09-129-40/+56
| | | | create functions, ie with Window and Capabilities arguments
* newt: one more attempt to commit insets-related changestrembovetski2009-08-204-5/+104
|
* newt: additional insets support for GL and AWT Windowtrembovetski2009-08-202-1/+23
|
* newt: added support for window insets. Only implemented for Windows and MacOS.trembovetski2009-08-201-0/+96
| | | | | Also clarified the meaning of setSize/getWidth/getHeight - they are assumed to be the size of the client area, excluding decorations.
* newt: added expose/paint event notification needed for passive rendering. ↵trembovetski2009-08-143-0/+158
| | | | Currently only implemented on Windows.
* Oops: Accidently removed AWT Display selection in NEWTSven Gothel2009-08-011-0/+2
|
* GL3 Related:Sven Gothel2009-08-011-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Fix glGetStringi's return type to String - Fix ExtensionAvailabilityCache: GL3's glGetStringi for GL_EXTENSIONS Ensure to add GL_VERSION_2_0 in case version >= 3.0 Ensure to not exceed version 3.0 for non GL3.1 context. In case of GL 3.1, do not include GL_VERSIONS below 3.0, since this is a forward compatible context. - Add Prologue to glGetString, where the ExtensionCache is being used for GL_EXTENSIONS - if already initialized. This feature adds backward compatibility for GL3 context on GL_EXTENSION. +++ General: Add GLPipelineFactory, a convenient pipeline factory for Debug/Trace and custom ones .. Change 'void setGL(GL)' to 'GL setGL(GL)', and let it return the successful set GL, or null.
* Gluegen:Sven Gothel2009-07-311-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | - Fix array element type name and const qualifier JOGL: - GL3: Set ArgumentIsString for GL3.1 methods - JAR file creation: Add 'filesonly' option - GLU: Static check of available impl., better fallback for GL2 without GLUgl2. - WGL: (Performance + Java2D/GL FBO works again) - Refactor WGL_ARB_pixel_format's HDC -> GLCapabilities: HDC2Caps - Revert change where we always create a dummy drawable/context for WGL selection (HDC2Caps). In case of no multisampling, use PFD2Caps only. - Update config using HDC2Caps (WGL_ARB_pixel_format) after context creation, if not done already -> updateCapabilitiesByWGL(). - profile.jogl: Add debug jars