UnstableChanges

Summary

  1. Added possibility to load font using InputStream parameter (details)
  2. build-test.xml: Add junit.run.newt.headless.singletest target (details)
  3. Windows make scripts: Fix 64bit java version, dont use raw LIB/CLASSPATH (details)
  4. Fix synchronization issues in GLDrawableHelper.flushGLRunnables(), fixes (details)
  5. Fix GLContextImpl.setRendererQuirks(..) CTX_IMPL_ACCEL_SOFT profile (details)
  6. Fix synchronization issues in Animator* Exception case (details)
  7. Fix future compatibility issues (analog to b22x commit (details)
  8. Refine Graph/Font InputStream Capabilities (commit (details)
  9. Bug 1078: Add Fallback in AWTPrintLifecycle.setupPrint(): Use Onscreen (details)
  10. Bug 1081: Fix GLJPanel Regression: Honor pre-init reshape-size at (details)
  11. minor: changed windows build scripts (details)
  12. Bug 1078, Bug 1082: Fix regression (typo), add missing assignment of (details)
  13. Fix of the bug 1078 (details)
  14. Bug 1084: Fix GLProfile Mapping regarding hardware priority, honor (details)
  15. OSX build scripts: Add java6 build script, bump default to use java8 (details)
  16. Bug 1078: Fix commit 99f91f8b28d42cdf341533736e878056bcae4708 (details)
  17. Uses System.err instead of System.out in order to drive the debug logs (details)
  18. Bug 1085: Increase and fix DEBUG verbosity in GLJPanel to catch reshape (details)
  19. Bug 1085: Fix GLJPanel regression while printing w/ invisible GLJPanel: (details)
  20. WindowsWGLGraphicsConfiguration[Factory]: Refine indentation to increase (details)
  21. UITestCase now extends GlueGen's test-util SingletonTestCase (details)
  22. SingletonTestCase -> SingletonJunitCase: Adapt to GlueGen commit (details)
Commit 628509b39ea7c16210315d191860511d6be4aa69 by Roman
Added possibility to load font using InputStream parameter
The file was modifiedsrc/jogl/classes/jogamp/graph/font/FontConstructor.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/graph/font/FontFactory.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/graph/font/typecast/ot/OTFontCollection.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/graph/font/typecast/TypecastFontConstructor.java (diff)
Commit c0de59efd77843177ea0045884763d93aad5b68b by Sven Gothel
build-test.xml: Add junit.run.newt.headless.singletest target
The file was modifiedmake/build-test.xml (diff)
Commit f9acc8f7b9072b8c12cdc16dee657349180e6bf0 by Sven Gothel
Windows make scripts: Fix 64bit java version, dont use raw LIB/CLASSPATH path
The file was modifiedmake/scripts/make.jogl.all.win32.bat (diff)
The file was modifiedmake/scripts/make.jogl.all.win64.bat (diff)
Commit cef7ba607ad7e8eb1ff2a438d77710a29aa0bda6 by Sven Gothel
Fix synchronization issues in GLDrawableHelper.flushGLRunnables(), fixes rare deadlock with animator-exception and invoke(wait=true, ..)

Fix synchronization issues in GLDrawableHelper.flushGLRunnables():
  - Querying 'glRunnables.size()' is not synchronized, only its reference is volatile,
    not the instance's own states.

  - 'flushGLRunnable()' must operates while acquired the 'glRunnable' lock.

  - 'glRunnables' are no more volatile

  - introduced volatile 'glRunnableCount', allowing 'display(..)' method
    to pre-query whether blocking 'execGLRunnables(..)' must be called.
    This is risk (deadlock) free.

Also fixes rare deadlock in animator display-exception / GLAD.invoke(wait=true, ..) case:
  - 'GLDrawableHelper.invoke(.., GLRunnable)' acquires the 'glRunnable' lock.
  - Then it queries animator state, which is blocking.
  - Hence animator's 'flushGLRunnable()' call must happen outside the animator lock
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/FPSAnimator.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/Animator.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/AnimatorBase.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLDrawableHelper.java (diff)
Commit c0c5fac5301f7264cfdd69117c1f85adfdc7b604 by Sven Gothel
Fix GLContextImpl.setRendererQuirks(..) CTX_IMPL_ACCEL_SOFT profile state

- GLContextImpl.setRendererQuirks(..) in called in GLContextImpl.setGLFunctionAvailability(..)

- GLContextImpl.setRendererQuirks(..) was called before fixing CTX_IMPL_ACCEL_SOFT
  via isCurrentContextHardwareRasterizer().

  The latter set CTX_IMPL_ACCEL_SOFT based on known software renderer string within GL_RENDERER.

  This lead to incorrect hwAccel assumption and hence wrong setting of GLRendererQuirks:
    - NoDoubleBufferedPBuffer (was selected even w/ later CTX_IMPL_ACCEL_SOFT)
    - BuggyColorRenderbuffer  (was never selected)

- Fix performs GLContextImpl.setRendererQuirks(..) _after_
  fixing CTX_IMPL_ACCEL_SOFT via isCurrentContextHardwareRasterizer().
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
Commit 66ecb6c386d5c3d87d8be2600a0c7dd7d71a4329 by Sven Gothel
Fix synchronization issues in Animator* Exception case

Refines commit cef7ba607ad7e8eb1ff2a438d77710a29aa0bda6

- The animator monitor-lock was still hold in the post finally block
  issuing flushGLRunnables(), due to intrinsic monitor release (in finally):
   - <http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.11.10>
   - <http://stackoverflow.com/questions/10743285/behavior-of-a-synchronized-method-with-try-and-finally>

- Further: AnimatorBase.flushGLRunnables() acquired the lock itself (duh!)

This commit removes the requirement for finally altogether
by simply return a boolean from handleUncaughtException(caughtException),
where false denotes the caller to propagate the exception itself (no handler).

Post synchronized block then issues flushGLRunnables() and
exceptation propagation as required.

AnimatorBase.flushGLRunnables() 'synchronized' modifier is removed.

Further, ThreadDeath is being propagated if caught.
Here the finally block is also removed - redundant.
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/FPSAnimator.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/Animator.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/AnimatorBase.java (diff)
Commit ca357af70d46a6c12ff8810565874ecabb564d87 by Sven Gothel
Fix future compatibility issues (analog to b22x commit 546f9b1a03c46b63f8bb18c1b8e2c80a8b66cf7c)

- GLFBODrawable:
  - Remove FBOMODE_DEFAULT

- GLRendererQuirks:
  - Remove COUNT
  - Add getCount() method for future compatibility.

- Animator
  - Hide local fields (private or package private)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLFBODrawable.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/Animator.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOAutoDrawableFactoryNEWT.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestVersionSemanticsNOUI.java (diff)
Commit bd24599b21f9787ac989e65b44dc1ba762162f22 by Sven Gothel
Refine Graph/Font InputStream Capabilities (commit 628509b39ea7c16210315d191860511d6be4aa69)

FontFactory Remove:
  - Font get(final URLConnection conn)
  - Font get(final InputStream stream)

FontFactory Add:
  - [1] Font get(final InputStream stream, final int streamLen, final boolean closeStream)
    - Direct usage of font InputStream w/ determined length,
      may instantiate BufferedInputStream in case given stream
      doesn't support mark/reset!

  - [2] Font get(final InputStream stream, final boolean closeStream)
    - Copy font InputStream w/o determined length,
      resulting in BufferedInputStream supporting mark/reset!

Security Related:
  - Only perform priviledged code on determine InputStream,
    _not_ when parsing the font stream itself!

  - Hence PrivilegedAction only happens in FontFactory's
    InputStream preparation.

Misc:
  - Use Uri class
The file was modifiedsrc/jogl/classes/jogamp/graph/font/JavaFontLoader.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/graph/font/FontConstructor.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/graph/font/typecast/TypecastFontConstructor.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT00.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/graph/font/typecast/ot/OTFontCollection.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/graph/font/FontFactory.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/graph/TestTextRendererNEWT10.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/graph/FontSet01.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/graph/font/UbuntuFontLoader.java (diff)
Commit 4813455dc413fb37da28ed4845fb6f22c65629f4 by Sven Gothel
Bug 1078: Add Fallback in AWTPrintLifecycle.setupPrint(): Use Onscreen GLAD if Offscreen-GLAD Realization throws an Exception (Stability)

- GLDrawableFactoryImpl: createOffscreenDrawable(..) and createDummyAutoDrawable(..)
  Temporary catch exception during setRealized(true) of newly created GLDrawable,
  to unrealize the instance before propagating the exception.

  This handling removes a memory leak in case the exception of this method is handled
  and application continues to operate, e.g. as in AWTPrintLifecycle.setupPrint().

  The underlying drawable gets unrealized, since it's setRealized(boolean)
  implementation toggles its realize-state before delegating the realize-operation.
  Hence this is functional.

- AWTPrintLifecycle.setupPrint() Stability
  Catch exception thrown by factory.createOffscreenAutoDrawable(..)'s setRealize(true)
  to continue operation w/ onscreen GLAD.
The file was modifiedsrc/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLCanvas.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLDrawableFactoryImpl.java (diff)
Commit ce969bd565b0a6e72632630c88c4135d0410bf0f by Sven Gothel
Bug 1081: Fix GLJPanel Regression: Honor pre-init reshape-size at initializeBackendImpl()

Commit 84f367a73c5b16dcebfd877e82e1c2cb90ae74ce removed utilization of reshape-size
in case panel-size is valid, even if a reshape event happened in between:
  - addNotify
  - paintComponent

initializeBackendImpl() includes now uses reshape-size IFF handleReshape is set.
Before it was using reshape-size only if panel-size was invalid.

TestAWT03GLJPanelRecreate01 covers this issue.
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/awt/TestAWT03GLJPanelRecreate01.java
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/awt/TestAWT03GLCanvasRecreate01.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
Commit e7156d4eedb7b62eb2765e2db4010ffd3d0ec9e5 by Sven Gothel
minor: changed windows build scripts
The file was modifiedmake/scripts/tests-x32.bat (diff)
The file was modifiedmake/scripts/tests-x64.bat (diff)
The file was modifiedmake/scripts/tests-win.bat (diff)
The file was modifiedmake/scripts/tests-x64-dbg.bat (diff)
The file was modifiedmake/scripts/tests-x32-dbg.bat (diff)
Commit 39cd0dfa0e46a3617b51e5b15a5fccedeae77f39 by Sven Gothel
Bug 1078, Bug 1082: Fix regression (typo), add missing assignment of printGLAD in NewtCanvasAWT.setupPrint()
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java (diff)
Commit 66d00dfc4cb2612fa91680b960baf5a2fb5fed53 by Sven Gothel
Bug 1084: Fix GLProfile Mapping regarding hardware priority, honor software/hardware attribute of all profiles

GLProfile's mapping code does not consider the following combination:
  - GL4 software
  - GL3 hardware

and hence maps GL4-software -> [GL2ES2, GL2GL3],
where GL3-hardware -> [GL2ES2, GL2GL3] is desired.

This combination has recently been observed on
Mac OSX 10.9.5, which includes a software GL 4.1 implementation.

However, other systems could be affected as well.

+++

Fix GLProfile.computeProfileImpl(..):

Only use the higher profile, if hardware-accelerated or none of the
lower profiles offers hardware-acceleration!

This extra condition was missing for certain profiles,
e.g. GL4, GL4bc, GL3, GL3bc and GL2.

Conflicts:
make/scripts/tests.sh
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLProfile.java (diff)
Commit 6187fbc0a9ca9bd5140a3082013044f3294a8c6d by Sven Gothel
OSX build scripts: Add java6 build script, bump default to use java8
The file was modifiedmake/scripts/make.jogl.all.macosx.sh (diff)
The file was addedmake/scripts/make.jogl.all.macosx-java6.sh
Commit 1b5c2dbc9204a85eb63cea952b289f5012690f35 by Sven Gothel
Bug 1078: Fix commit 99f91f8b28d42cdf341533736e878056bcae4708 (GLRendererQuirks.NoPBufferWithAccum): Accum buffer allowed if !usePBuffer; Avoid NPE.

99f91f8b28d42cdf341533736e878056bcae4708
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsPbufferWGLDrawable.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
Commit 4b044d4de5272d45ec9b0b7b12ed40fa806d36e1 by unknown
Uses System.err instead of System.out in order to drive the debug logs more consistent, adds a method to convert an attribute list into a capabilities object with no check in order to display some information about skipped capabilities objects and fixes a NullPointerException when skipping a capabilities object
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsPbufferWGLDrawable.java (diff)
Commit 5af9b44a893db3b27ddcd2a13d0008ec21880649 by Sven Gothel
Bug 1085: Increase and fix DEBUG verbosity in GLJPanel to catch reshape regression during print
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
Commit 650862cc994b1a3ee6d2af970b5b1d8d73ccd2a8 by Sven Gothel
Bug 1085: Fix GLJPanel regression while printing w/ invisible GLJPanel: Zero size panel size

This is a regression due to commit 84f367a73c5b16dcebfd877e82e1c2cb90ae74ce:
   GLJPanel Cleanup: Remove initial FBO reshape;
   ** Propagate reshape only if differs from panel-size; ** <- this one
   Use pre-fetched panel-size.

Above commit only issued 'sendReshape'
if the reshape-size differs from the actual panel-size.

Note: The reshape-size is propagated to panel-size either in
  [1] initializeBackendImpl(..) or
  [2] handleReshape(..) @ paintComponent.

While printing w/ an invisible GLJPanel the reshape-size
has not yet propagated to the panel-size (see above)
and two consecutive reshape calls will cause the last one to be dropped.

With this patch we have:

GLJPanel.addNotify()
GLJPanel.reshape.0 null resize [paint] [ this 0x0, pixelScale 1x1, panel 560x420] -> 0x0 * 1x1 -> 0x0, reshapeSize 0x0
GLJPanel.reshape.0 null resize [paint] [ this 560x420, pixelScale 1x1, panel 560x420] -> 560x420 * 1x1 -> 560x420, reshapeSize 560x420
GLJPanel.setupPrint: scale 1.000000 / 1.000000, samples 0, tileSz -1 x -1
GLJPanel.createAndInitializeBackend.1: [printing] 560x420 @ scale 1x1 -> 560x420 @ scale 1x1

A
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
Commit dd0ae5676f033eb456cb89f4479a0d55ad3fb59f by Sven Gothel
WindowsWGLGraphicsConfiguration[Factory]: Refine indentation to increase readability (140 chars width)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java (diff)
Commit 99db277d1acf65d2f2ceb13cffc1a16ad2bf6cd8 by Sven Gothel
UITestCase now extends GlueGen's test-util SingletonTestCase
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/util/UITestCase.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestVersionSemanticsNOUI.java (diff)
Commit da6339f8f712237dbd58180afde214e3f7692ee1 by Sven Gothel
SingletonTestCase -> SingletonJunitCase: Adapt to GlueGen commit 773d96584b4edc13eb6ff689eaf891aab09aa5a4
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestVersionSemanticsNOUI.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/util/UITestCase.java (diff)