| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Observing memory consumption showed:
1 - 'traceLock' debug stack traces (GLContextLock)
2 - massive Iterator usage
(1) is fixed, ie only enabled in DEBUG mode, like we have done in RecursiveLock before
(2) Using an Iterator on ArrayLists with a low element count < 100,
as it is usual in our use cases, is observed not to be faster
than accessing the elements via an index (-> TestIteratorIndexCORE.java ).
On the contrary, the index implementation was a bit faster.
Further more, these Iterators were massively used on the fly during animation,
hence their memory managment even impacts fluent processing/animation.
Recoded all animation related (display, surfaceUpdated, ..) loops using an index.
|
|
|
|
| |
(ConcurrentModificationException) - 2 - Use volatile barrier
|
|
|
|
| |
(ConcurrentModificationException)
|
|
|
|
| |
the threaddump
|
| |
|
|
|
|
|
|
|
| |
sharedContext lock/release
Unsynchronized lead to an 'context already locked by another thread' exception
at initialization time (Windows: in general; X11: ATI and pbuffer drawable).
|
|
|
|
|
|
| |
pending creation
NEWT/AWT: TestParenting03AWT use Container and add delay in addNotify(2nd-gl-element);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
& WindowImpl debug change ; Add NEWT/AWT unit test 1 frame - 2 NewtCanvasAWT
Relocated RecursiveToolkitLock -> gluegen
com.jogamp.nativewindow.impl.RecursiveToolkitLock -> com.jogamp.common.util.RecursiveToolkitLock
NEWT AWTParentWindowAdapter fix
- minimize action if status unchanged
- added missing isValid() condition before runOnEDT..
NEWT WindowImpl:
- debug output only if action triggered (resize/visible)
Add NEWT/AWT unit test 1 frame - 2 NewtCanvasAWT
- Testing case where AWTParentWindowAdapter provokes both
GLWindow instances to resize/visible
|
|
|
|
| |
(wait-interrupt) using a LinkedList
|
|
|
|
|
|
|
|
|
|
| |
Fix: JOGL GLContextLock starvation
- Apply changes made in RecursiveToolkitLock (c8a9c59e4838cd43090378a7ed60544449472801),
ie notifyAll() -> notify(), plus sync (flow/mem) usage.
Fix: Tighten NEWT/AWT focus unit tests
- AWTRobotUtil.requestFocusAndWait() waits for EventCountAdapter gain and lost focus as well.
- In case of NewtCanvasAWT, additionally wait for it's lost focus
|
|
|
|
|
|
| |
- Added reset() to EventCountAdapter, to ensure a unqiue start state
- Removed 'lost focus' assertion, since this event might be pending
and we don't poll on it or have a barrier
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix: NativeWindow RecursiveToolkitLock
- Use notify(), instead of notifyAll(), so only one thread is being awakened
for the single resource. Otherwise starvation and timeout happen, since
the oldest thread might not get waken up (earlier than other threads) within timeout.
- Inner class for all synchronized (flow/mem) fields for easier fine grained sync/lock.
Fix: GLWindow lockSurface/unlockSurface
- Enter locked surface block only if surface lock could be acquired
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NativeWindow/NativeSurface Refactoring
- Using NativeSurface interface
- NativeWindow extends NativeSurface, adds getLocationOnScreen(Point)
- NativeWindow add: getParent()
- NativeWindow/Surface: Removed 'invalidate()', use 'destroy()' if you must.
- NullWindow -> ProxySurface impl NativeSurface
- JOGL: Uses NativeSurface only.
- GLDrawable.getNativeWindow() -> GLDrawable.getNativeSurface()
Added mouseClick NEWT/AWT unit test
JOGL:
- GLAnimatorControl add: resetCounter()
-
NEWT:
- GLWindow counters: return GLWindow counters always
- WindowImpl
- requestFocus() wait until done
- reparent: readded requestFocusImpl(true),
native impl skips java focusAction if reparented
- X11Window: Add XRaiseWindow() in requestFocus()
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
BeforeClass/AfterClass FileLock
Due to the fact that any test with a UI may interfere
with a UI test (test focus, active, ..), all tests are
derived from the common UITestCase superclass, which
decorates the test class with a FileLock at BeforeClass/AfterClass.
Increased junit timeout to 10 min
|
| |
|
|
|
|
| |
otherwise multiple parallel tests will render the result invalid
|
|
|
|
| |
otherwise it may cause deadlock (AWT EDT)
|
| |
|
|
|
|
|
|
|
|
| |
NEWT Focus fixes:
WindowImpl.setFocusAction():
fix (was never set)
NewtCanvasAWT.FocusActionImpl:
KeyboardFocusManager.clearGlobalFocusOwner() after requestFocusAWTParent()
|
|
|
|
| |
temp loss) - instead test focus with key input.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
on an AWT device. Wait until TO or event received.
|
|
|
|
|
|
| |
- Window add focus tracking and query via hasFocus()
- TestTransformFeedbackVeryingsBug407NEWT allow fail if no GL3 is available
- TestFocus01SwingAWT check on NEWTChild focus
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
destroy() ; DisplayImpl: refCount reset
|
|
|
|
| |
Test: Add parallel NEWT animation.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GLCanvas NPE fix - NewtCanvasAWT added destroy(..)
Unit test for Bug 411 (Pre AWT/Swing Usage, Mixed usage with JOGL):
Added exhausting Pre AWT/Swing usage test utilizing a later JOGL init
with GLCanvas and NEWTCanvasAWT.
This works for NV+X11+Ubuntu+64bit, have to do more testing.
GLCanvas NPE fix at destroy/dispose, check if already destroyed, ie context==null
NewtCanvasAWT: Add destroy() and destroy(boolean unrecoverable)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Adapted tests to API changes
- Notably new Display lifecycle / Reparenting tests:
- TestDisplayLifecycle01NEWT - Tests display lifecycle
- TestParenting01NEWT - Tests various reparenting cases (native/recreate)
- TestParenting01bAWT - Tests Animator/FPSAnimator with reparenting (AWT/Newt)
- Other changes:
- TestGearsNEWT: Added 'on-the-fly' KeyAdapter
inducing a GLRunnable into the GLWindow for fullscreen toggle.
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NativeWindow: Interface NativeWindow changes:
- Remove 'throws' qualifier in lockSurface(), since it is not
- Adding convenient 'one call' isSurfaceLockedByOtherThread()
- Adding getSurfaceLockOwner()
NEWT Window/GLWindow:
- Unclutter Window/GLWindow relationship - save Window's indentity
GLWindow's role is a GLAutoDrawable implementation aggregating
(maybe even compositioning) a Window.
The previous implementation just derived from the Window implementation,
overwriting methods and fields - impossible to ensure sanity / completness.
It was also not ensured that the added functionality of GLWindow
(setVisible, destroy, ..) has been issued in case of handling the
aggregated Window alone (window callbacks, ..).
To solve this issue in a 1st attempt without changing the GLWindow API,
Window is just an interface, being implemented by their specializations,
hence sanity is intrinsic.
GLWindow's added functionality is ensured by a Window.LifecycleHook
interfaced implementation, registered at the aggregated Window.
- Screen and Window are interfaces now (new files)
- Display is an abstract class.
- Their (abstract) implementations resides in impl/<BaseName>Impl
- GLWindow implements Window as well
- Remove Screen reference handled by setScreen(Screen) method.
- Lock native parentWindow if used (createNative/reparenting)
- Move lockSurface/unlockSurface from unchecked override pattern
to an callback style using abstract methods lockSurfaceImpl/...
- Sorting all methods to semantic sections, abstract, superinterface, ..
- Reparenting: Handling different reparenting situations:
- Unchanged - No change
- Native Reparenting - Compatible Display/Screen, try native reparenting
- Native (Re)Creation - Use destroy/create pattern
- Native Creation Pending - Create later
- setUndecorated() calls reconfigure Window now, ie tries to change the window actually
- Don't issue 'requestFocus()' directly from the native implementation anymore,
call it from the Java code.
- Window/GLWindow/NewtFactory: Constructor simplification
Avoid explosion of constructor overloading, ie removing the 'undecorated' variant,
since this is redundant due to the 'setUndecorated(boolean)' method.
- Fixed/added API documentation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EDTUtil:
- Added documentation to EDTUtil interface
- Removed 'stop()', introduced 'invokeStop(Runnable)',
allowing proper shutdown with a final task (see doc).
- Fix (c) header, since it is a new file, changed to interface with df161c9fcc1bc90d03e374e0eb8148424d4c5577
DefaultEDTUtil:
- Move EDT scope volatile states (shouldStop, edtTasks)
into inner class EventDispatchThread (the actual EDT).
Fetching those outer instance values from within the inner EDT instance
results in 'old values', ie this memory didn't get updates/synced.
- Give the thread a proper name:
<invocation-thread-name>-<custom-name>-EDT-<start-sequence-number>
This allows easy identification of the EDT incl. indication of the 'start' sequence number.
- Added fail-fast Exceptions in case of a stopped EDT with remaining tasks.
This should validate/test the runtime behavior.
- Ensure isRunning(), invokeStop(..) and waitUntilStopped()
only returns after the last task has been executed.
- invokeImpl/EDT.run: Complete task-lock coverage incl. wait case.
- The final task is blocked until the wait() state in invokeImpl is reached.
- EDT executes the final task and notifies the lock owner - then exist
- invokeImpl leaves the wait state.
- See EDTUtil API doc ..
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change GLAutoDrawable interface: setAnimator(Thread) -> setAnimator(GLAnimatorControl)
to minimize the setAnimator(..) calls and
to allow fine grained control over the animation, ie in case of reparenting
where the animation shall pause while changing the window(s).
Introducing GLAnimatorControl interface:
- abstract class AnimatorBase implements GLAnimatorControl
- class Animator extends AnimatorBase
- class FPSAnimator extends AnimatorBase
This also changes FPSAnimator, since it is no more derived from Animator,
use it's superclass or superinterface instead.
+++
- Fix GLJPanel.paintComponent(): Don't issue reshape/display
in case an external animator thread is animating.
- Fix: Documentation [API]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix DefaultEDTUtil deadlocks: Minimize locking!
- invoke:
- Check isCurrentThreadEDT() before locking edtLock
- Check isRunning() redundant, since we start it beforehand
- EventDispatchThread.run():
- Relax definition of EDTUtil::waitUntilIdle(), ie method
may return while last task is being executed (see below).
- Execute task outside of edtTasks lock.
TODO: Fix more test cases (new and old)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
- www/index.html: absolute local refs -> relative
- Platform GLContextImpl specialisations: remove local overriding drawable instance
- X11ExternalGLXDrawable: Remove dead code, left over.
|
| |\ |
|
| | | |
|
| | |\ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- locks are final
- debug prints use System.err exclusively (to prevent message corruption)
- removed unused imports, unused variables
- code cleanup in some places
|
| | | | |
|