| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Window Reparenting (unification):
On the fly Display/Screen creation resides in NewtFactory.
Reparenting logic within Window.
Handles all reparenting cases now:
ACTION_NONE, ACTION_SOFT_REPARENTING,
ACTION_NATIVE_REPARENTING, ACTION_NATIVE_CREATION
- out.println -> err.println
++++
- Bumbed windows bat scripts to 1.6.0_21 and ant 1.8.1
- Debug: /RecursiveToolkitLock.java TO is 300s for now, while not finished.
-
+++
Needs more testing. Deadlocks: AWT/NEWT parenting.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
is redundant due to COPYRIGHT notice in LICENSE.txt.
It's product usage terms are no more applicable,
since our repository is not used by Sun Microsystems to deliver a product.
LICENSE.txt changes:
- Updated SGI FreeB license reference from 1.1 to 2.0
- Dropped Sun alternative license, which is redundant
due to the FreeB 2.0 license.
- Added JogAmp Community and common denominator:
New BSD 3-clause license
README:
- Added contacts
- Sun -> JogAmp
- Added Michael Bien
Changed 'Sven Gothel' and 'Michael Bien' New BSD 3-clause license
to 'JogAmp Community' Simplified BSD 2-clause license.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Display/Screen:
- Removed Display reusage by unique TLS key: type + name,
instead use user-responsibility or Destroy-When-Unused (usage reference count).
- Removed X11 Display TLS pool usage
- Display creation means i, incl the later native one (X11).
- Added reference counting as follows:
- Display's refCount: number it is referenced by Screen:
display.addReference()/display.removeReference()
- Screen's refCount: number it is referenced by Window:
screen.addReference()/screen.removeReference()
- Lazy creation using refcount 0 -> 1
All resources are created when they are needed.
This also removes redundant native Display/Screen objects,
ie in case of [AWT] reparenting.
- Default lifecycle is user-responsibility, ie no Destroy-When-Unused, where
Window may be destroyed unrecoverable, which removes the Screen reference only.
- If using optional Destroy-When-Unused a
Window may be destroyed unrecoverable, which removes the Screen reference:
Screen.removeReference();
IF Screen.refCount == 0 THEN
Screen.destroy();
Display.removeReference();
IF Display.refCount == 0 THEN
Display.destroy();
- Use Destroy-When-Unused lifecycle for all automatic created Display/Screen
instances (GLWindow, NewtCanvasAWT,..)
- Display/Screen destroy/create cycles valid,
ie you can reuse destroyed Display/Screen's
- EDTUtil:
- Created right away.
- Started always via invoke, if not running.
- DefaultEDTUtil:
- Simplified locking a bit locking on:
- edtLock for start/stop
- edtTasks for tasks queue
- invoke-wait doubles check shouldStop
- invoke-wait 'waiting' outside of edtLock
+++
NEWT: Cleanup
- Window.destroy/invalidate: deep -> unrecoverable
- Window.isNativeWindowValid() -> Window.isNativeValid()
to unify with Display/Screen
- Window.isDestroyed() -> Window.isValid()
to unify and simplify logic.
Returns false if destroy(true) has been called.
- NewtFactory.wrapDisplay(.. handle) -> NewtFactory.createDisplay(.. handle),
since it actually creates a compatible display.
+++
NativeWindow X11Util: Added non TLS createDisplay()/closeDisplay()
+++
TODO:
- Stabilize (many tests fail)
- OSX
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Issueing 'requestFocus' via the native EDT dispatch loop may cause a deadlock,
due to a possible implicite AWT requestFocus call (NewtCanvasAWT).
Approach:
RequestFocus issued directly,
by Window.requestFocus() and the native EDT dispatch loop,
is queued for later execution by EDT.
This shall decouple a possible native windowing TK resource collision.
- X11Windows.c: Add missing 'reparented' param for requestFocus
to force requestFocus after reparenting.
- AWTWindow.java: Add requestFocusImpl()
+++
NEWT: Cleanup
- Remove Event Type Bits in:
- EventListener.h
- NEWTEventListener.java
- Remove InputEvent 'consume' status
-
|
| |
|
| |
|
| |
|
|\ |
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
|
|
|
| |
reparenting
Set _NET_WM_WINDOW_TYPE to specify decoration etc.
On KDE4 having compositing enabled the reparent window is sometimes
made invisible (UnmapWindow happened). FIXME.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
native repaint; NewtCanvasAWT focus fix
Support for native repaint, which shall call display() in case no animator is running.
GLAutoDrawable invoke(GLRunnable) impl. handles case if invoked on animator thread,
or no animator thread is running (issueing a display() call).
The impl resides in GLDrawableHelper.
GLEventListener's init() and glViewport()/reshape() method must be called before the 1st display()
and after a dispose() call. It could miss the 1st display() call if added
after the setVisible(true) call - due to the native repainting.
The impl resides in GLDrawableHelper.
The Animator un-/registers itself at the GLAutoDrawable via setAnimator.
NEWT Window reparent always issues a resize() and display() call.
NEWT native Window uses direct send.*Event for input events (again),
instead of enqueueing it for performance.
NEWT Window implements all status change and Java native event callbacks,
instead of having duplicated code in all implementations.
NewtCanvasAWT if the Newt window is focused, the AWT/Swing component[s] will loose the focus.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
native repaint; NewtCanvasAWT focus fix
Support for native repaint, which shall call display() in case no animator is running.
GLAutoDrawable invoke(GLRunnable) impl. handles case if invoked on animator thread,
or no animator thread is running (issueing a display() call).
The impl resides in GLDrawableHelper.
GLEventListener's init() and glViewport()/reshape() method must be called before the 1st display()
and after a dispose() call. It could miss the 1st display() call if added
after the setVisible(true) call - due to the native repainting.
The impl resides in GLDrawableHelper.
The Animator un-/registers itself at the GLAutoDrawable via setAnimator.
NEWT Window reparent always issues a resize() and display() call.
NEWT native Window uses direct send.*Event for input events (again),
instead of enqueueing it for performance.
NEWT Window implements all status change and Java native event callbacks,
instead of having duplicated code in all implementations.
NewtCanvasAWT if the Newt window is focused, the AWT/Swing component[s] will loose the focus.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add: 'public void addGLEventListener(int index, GLEventListener listener)'
Fixes previous GLWindow addition, ie public in interface and common impl. behavior.
- Add: 'public void invoke(boolean wait, GLRunnable glRunnable)'
- Change: 'public void display()' semantics, in regards to the GLRunnable queue
New: GLRunnable, invoke() at GLAutoDrawable
Allows injection of GL commands from other threads, executed after the
GLEventListener's display() notifyier by the GLAutoDrawable.
NEWT:
- Fix EDTUTil.invokeAndWait() and Display.enqueueAndWait() impl.,
where we only wait for the single action/event to be processed now.
JUnit: NEWT Parenting
- Added test cases for Swing (JFrame, JPanel and COntainer) with NewtCanvasAWT
- Added thread calling 'invoke(true, GLRunnable)'
- start Animator ASAP
|
|\ |
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Revert "swing on edt only, awt off edt. cleaned up the test a bit."
This reverts commit dcc946e925ec73740e2985e5febf5fbb732ad1d9.
Revert "added JFrame and Window runs to testAWT01GLn testcase + EDT fixes."
This reverts commit 5cde948df47ecf435eda95b846a1b5c7afd6f5f9.
|
| |\ \ |
|
| | | | |
|
| | | | |
|
| |_|/
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
get<type>Listener(int index) ; NEWTEvent attachments
NEWT Add:
add<type>Listener(int index, <type>Listener l) ;
get<type>Listener(int index) ;
NEWTEvent attachments for listener to listener communication
via object passing. This methodology is similar to the 'Atom'
attachment of native systems.
It is preferred to a 'consume()/isConsumed()' pattern,
since it is less flexible and would 'endanger' system events.
TODO: <type>Listener[] get<type>Listeners() doesn't work and was always buggy.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
glMap*Buffer*; GLX/WGL/CgGL: All runtime dynamic; Misc ..
TODO: Compile and test on MacOSX ..
Fix:
=====
Multithreading/Locking:
See jogl/doc/Implementation/MultiThreading.txt
- Locking layer is not platform agnostic, ie GLContextImpl, GLDrawableImpl, ..
and NEWT: Window/Display
- No more use of JAWT global lock necessary, removed.
- No need for X11 Display lock, on the contrary,
this made the NV driver hang.
- Use common window/surface lock
- All NativeWindow surfaceLock's are recursive now
glMapBuffer: If size is 0, don't do cont with the native call.
glMapBufferRange: Fix capacity.
glNamedBufferDataEXT: Track the size.
glMapNamedBufferEXT: Manual impl. - use the tracked size
glXGetVisualFromFBConfig, glXChooseFBConfig, glXChooseVisual: Instead of
ignoring and implement a renamed version (*Copied), we just use ManualImplementation
for the proper copy-result code.
DesktopGLDynamicLookupHelper: Initialize _hasGLBinding* attributes
in the determing loadGLJNILibrary() method, which is called by super().
Otherwise static init will overwrite them after the super() call.
X11GLXDrawableFactory: Don't release anything at shutdown (removed sharedContext.destroy()),
since this caused a freeze/SEGV sometimes.
Fixed NEWT's reparentWindow() functionality incl NewtCanvasAWT usage.
- Native: if not visible, don't focus, etc
- NewtCanvasAWT: Use the container size to start with
- Run the command on the EDT
Using GlueGen's new DynamicLibraryBundle utility:
- X11, Windows and MacOSX OpenGL adapted to DynamicLibraryBundleInfo.
- X11GLXDynamicLookupHelper -> X11GLXDynamicLibraryBundleInfo
- Remove all path from lib names.
- GL order: libGL.so.1, libGL.so, GL
- shallLinkGlobal: true -> to server some 'old' DRI systems
-> http://dri.sourceforge.net/doc/DRIuserguide.html
- shallLookupGlobal: false
- Try both : glXGetProcAddressARB and glXGetProcAddress
- Using bootstrap: GLX.glXGetProcAddress(long glxGetProcAddressHandle, String glFuncName)
Found the issue with LIBGL_DRIVERS_PATH, ie if not set
no valid GL instance can be found (ie ATI fglrx/DRI).
This may happen if using a differen user than the desktop user
for whom the env var is set within some /etc/X11/Xsession.d/ script.
Enhancements:
=============
GLBufferSizeTracker: Use IntIntHashMap and add DirectState size tracking.
GLBufferStateTracker: Use IntIntHashMap.
GLStateTracker: Use IntIntHashMap.
GLDynamicLookupHelper: More generic (global loading/lookup and GetProcAddress function name list),
remove redundant code.
FIXME:
MacOSXCGLDynamicLookupHelper:
- Not tested
- Not using NSImage lookup anymore as recommended by OSX API Doc,
so dlsym is used always (to be tested)
WindowsWGLDynamicLookupHelper:
- Not tested
GLX/WGL/CgGL is all runtime-dynamic as now, ie loaded and looked-up at runtime,
no compile time dependencies to GL anymore, nor a need to specify CgGL.
Split up WGL in GDI and WGL, to allow proper dynamic runtime linkage of OpenGL32
while using static binding to GDI32
NEWT events generated by native code are enqueued and not send directly.
This should ease locking mechanisms .. if any are necessary.
NEWT: More platform specific code moved to *Impl method,
simplifying the generic code of the superclass and impl protocol.
Cleanup:
=========
Replace all InternalBufferUtil's with com.jogamp.common.nio.Buffers
Removed all InternalBufferUtil's from repository
Removed GLContextImpl notion of 'optimized' surface locking,
where the surface gets unlocked during makeCurrent/release.
This just makes no sense and would impact multithreading in a horrible way.
|
| |/
|/|
| |
| | |
Add Platform info in test
|
|/
|
|
|
|
|
|
|
| |
- Using Display.getEDTUtil() and Display.runCreateAndDestroyOnEDT()
to determine the NEWT EDT behavior, which may be specialized by the implementation.
- AWTWrapper and Newt/AWT Parenting deadlock fix.
- Misc fixes in test cases
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Misc.
Due to incapabilities of the previous AWT/NEWT reparenting
the implementation and spec had to be changed to support this feature.
See the first 2 comments below.
- Tested on GNU/Linux (OK), Windows (a few bugs left)
-
TODO:
- Clarify the size/layout issue, ie who is responsible etc
In the test, incl AWT/NEWT, we set the size on the GLWindow
and ie pack the AWT Frame.
- Fix remaining [Windows] bugs ..
- Fix/Implement MacOSX port ..
Fix AWT/NEWT reparenting:
===========================
- Now NewtFactory's createWindow() method for parenting handles NativeWindow only
and is no more responsible for creating a child window upon an AWT Component.
See class com.jogamp.newt.awt.NewtCanvasAWT for NEWT/AWT parenting.
- New com.jogamp.newt.awt.NewtCanvasAWT, responsible for handling
AWT's reparent events via addNotify/removeNotify.
Reparenting is implemented via the new NEWT Window's reparentWindow() method.
Also sets the background erase to false, if supported.
- Fix zero size semantics in Window (setSize/setVisible)
Since a zero size window is not supported by many compoenent (Windowing system, OpenGL, ..)
we use the visibility methodology to not show a 0x0 window. See Javadoc.
AWT components may start with zero size.
- New NEWT Window: reparentWindow(NativeWindow newParent, Screen newScreen)
Allowing to change the parent of a window. Similar with the fullscreen toggle,
but without size/position change.
Native reparenting allows to keep alive the native
window while changing the container, hence it is preferred to a destroy/create cycle.
To benefit from the native reparenting, a NEWT implementation has to implement
'protected boolean reparentWindowImpl(long newWindowHandle)'
and return true, otherwise reparenting will be 'emulated' via
the expensive destroy/create cycle.
- NEWT's Window references all of it's children, if any
- NEWT's Window propagates setVisible/destroy actions to it's children.
- Fix NEWT's destroy() semantics.
A call of destroy() or destroy(false) shall only result in the destruction of the
native window (handle) nothing more. A subsequent setVisible(true) shall allow
the complete recreation of the Window into a usable state.
A call of destroy(true) destroys all resources the Window holds,
may include Screen/Display and OpenGL resources in case of GLWindow.
This is necessary to allow proper reparenting, where a native window may become
destroyed, but should be recreated via setVisible(true) later on.
- Fix NEWT set[Size|Position|Fullscreen|Visible] synchronization.
Use a recursive lock instead of the Window instance, otherwise arbitrary Window access
via AWT's EDT, NEWT's EDT or other threads can block.
Also removed a use pattern like:
key.lock()
try {
EDT.invoke(action());
} finally {
key.unlock();
}
Where action() itself uses the same lock object (here key), the result is a deadlock.
NativeWindow Changes:
======================
- We can use XInitThreads() now (concurrent threading support)
in combination with AWT.
Might have been some async in our NEWT locking in regards to AWT (sync()),
and the X11 Display changes made in c787f50d77e2491eb0d8201d534a6fa4885a929e.
- NativeWindow's window handle is _not_ transient like surface handle,
fixed documentation.
JOGL Changes:
=============
- New 'isRealized()' method in GLDrawable.
-
Misc Fixes
============
- Fix NEWT set[Size|Position|Fullscreen|Visible] duplicate code
Due to pure abstract signatures, the set[Size|Position|Fullscreen|Visible]
implementations of X11, OSX, .. contained duplicate code and state handling (size, pos, ..).
These are now decoupled, ie generic set[Size|Position|Fullscreen|Visible] implementations
calling simple set[Size|Position|Fullscreen|Visible]Impl implementations.
- Fix NEWT: Renamed setAutoDrawableClient(boolean) to setHandleDestroyNotify(boolean)
The semantic of
setAutoDrawableClient(boolean) defaults to false
was too complicated and specific, hence changed to
setHandleDestroyNotify(boolean) defaults to true
since its more clear and the name refers the window itself..
- Fix NEWT: Removed GLWindow's unused global window list
- Fix NEWT: Remove Window's unused event mask
- Rename com.jogamp.newt.impl.awt.AWTNewtFactory -> com.jogamp.newt.awt.NewtFactoryAWT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
+++++
Changed NEWT NativeWindow creation contract
Original contract:
(1) A native window was created as soon as possible,
ie when NEWTFactory.createWindow(..) was called - if possible.
(2) A valid native window has to be created at least after setVisible(true)
has been called.
Problems:
Not all implementation are able to create the native window that early,
but at setVisible(true) only (e.g: KD and EGL).
Due to window parenting especially the new AWT/NEWT parenting,
the native window can only be created in case the parent native window is valid.
New contract:
(1) A native window is created at setVisible(true),
if it's a top level window or the native parent window is valid.
(2) A valid native window may not be created after setVisible(true)
has been called.
Subsequent setVisible(true) calls shall be made in case
the creation has not been done yet.
This is demonstrated in GLWindow.display() for example.
The new contract implements a lazy native window creation.
+++++
AWT/NEWT Parenting
- HierarchyListener and ComponentListener ensure that the NEWT child window
will be setVisible according to the AWT parent window.
- Lazy native window creation relaxes requirements to the parent window's state.
- Attachment of the child window and setVisible() may be called
after NEWT child window creation.
- GLWindow supports NEWT child window creation directly
The test case TestParenting01AWT.java reflect this new contract
and demonstrates more simplified and more flexible use cases.
+++++
NEWT Fixes:
- All NEWT implementation's native code method names end with 0.
- GLWindow: don't issue the actual 'init'/'display' call to GLEventListeners
in case the window is not visible.
- NEWT setSize/setPosition:
if native-window
call native-window action and let the attributes being set by
the feedback call, which issues more action, ie RESIZE.
else
set the attributes directly, no feedback call/action is necessary.
+++++
X11 Fixes:
- X11GLContext MakeContextCurrent:
Use MakeCurrent in case write and read drawable are equal,
otherwise SEGV happens on ATI with heavy multithreading involved!
Even XLockDisplay and XSync didn't help here ..
- X11GLXDrawableFactory shared resource:
Removed the resource holder thread to simplify code,
hence proper release is no more desired and it could become a cause for deadlock.
- Moved XInitThreads() from NEWT X11Window -> NativeWindow X11Util,
since NativeWindow is loaded first (essential for XInitThreads())
and it is the more basic lib.
- Made call to XInitThreads() conditional, ie it's spared if
AWT could be used - which causes SEGV .. (AWT bug). See X11Util.java
+++++
JOGL Fixes:
- GLProfile.isAWTAvailable() -> NativeWindowFactory.isAWTAvailable()
- GLProfile.isAWTJOGLAvailable() -> GLProfile.isAWTAvailable()
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- zip Javadocs, moved to build* dir
- re-enable WGL ARB GetContext (buggy)
- relaxed junit tests:
src/junit/com/jogamp/test/junit/jogl/awt/TestAWT01GLn.java
- GL3bc/GL4bc + AWT doesn't work with ATI currently, driver bug
src/junit/com/jogamp/test/junit/jogl/offscreen/TestOffscreen01NEWT.java
- All test cases, ie pbuffer detection may fail, no pixmap detection
- Fix Windows ARG CreateContext
- GLContext
- GLVersion mapping functions: use profile bit
- Fix isGL*() queries { compat|core, ..}
- Pass through the profile bit (COMPAT, CORE, ES), only one can be set
- GLProfile
- glAvailabilityToString() add the queried HW Context info
-
|
| |
|
| |
|
| |
|
|
|
|
| |
as a parent
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Clarify NEWT setSize/setPosition in regards to fullscreen state
- Windows: Allow child win to receive keyboard events
- requestFocus: calls SetForegroundWindow and SetFocus
- requestFocus when mouse clicked
- add WS_TABSTOP
- Windows: Allow child win to set position
- TODO: child-win fullscreen as in X11 ..
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Common native in NewtCommon.c/.h
- Add simple NEWTEventFiFo, providing a pattern
to spool events by an EventListener and to process them
where it impacts (GLEventListener ..)
- Window [X11|Windows]: setSize/setPosition:
- always store the values,
- only act if valid and !fullscreen
- Window [X11]:
- Add requestFocus
- Add setTitle
- Fix parent/child window creation
- Fix parent/child window fullscreen (reparenting)
- JUnit Test: ParentTest:
- Shows parent and client window animation
- Client window shall be able to go into fullscreen,
ie disconnect/reconnect from its parent.
Test: Focus-client + type-'f'
- Both windows receive/dispatch events properly
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- Catch invalid drawable for all impl. at GLContextImpl if !created yet
- GLDrawableFactoryImpl (X11/WGL) catch and fwd Throwable properly
- GLProfile catch LinkageError and handle it
In case of nothing is available, a final ExceptionInInitializer will be thrown,
with the produced GLException that no GLProfile is available.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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 ..
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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().
|