Skip to content
The Jenkins Controller is preparing for shutdown. No new builds can be started.
Unstable

Changes

Summary

  1. Fix bug 668 : Android keyboard input was uppercase (details)
  2. Fix NEWT/AWT WindowClosing Unit Tests ; Review/Cleanup NEWT (details)
  3. Fix Bug 677: NEWT/Android: Add support for Android's (details)
  4. NEWT WindowImpl: Cleanup redundancies in destroy() and (details)
  5. NEWT: Harmonize MouseEvent Pressure (API Change!) (details)
  6. Fix AWT EDT Deadlock in AWTWindowClosingProtocol, regression of commit (details)
  7. Adapt to GlueGen's relocation of AWTEDTExecutor - GlueGen commit (details)
  8. All AWT Related Unit Tests: Call AWT 'frame.setVisible(..)' and (details)
  9. TestBug572AWT: Add test case w/ setting GLCanvas's size and frame.pack() (details)
  10. Fix Bug 695: WGLExt.wglChoosePixelFormatARB causes buffer underflow due (details)
Commit c9a13b31703302f58100af2a3f437ff7cb8fd010 by eric.brayet
Fix bug 668 : Android keyboard input was uppercase
The file was modified src/newt/classes/jogamp/newt/driver/android/event/AndroidNewtEventFactory.java (diff)
Commit 808a9a27a8c1c9e0a6701a8dd81d51f8daa8129d by Sven Gothel
Fix NEWT/AWT WindowClosing Unit Tests ; Review/Cleanup NEWT WindowClosing mechanism

Due to a NEWT WindowClosing event regression cause by NewtCanvasAWT changes
a review of our WindowClosing event mechanism was required.

Important cleanups are marked w/ '(*)' below.

I would have preferred to change the 'WindowListener.windowDestroyNotify(WindowEvent)'
method to pass a WindowCloseEvent object exposing more information like
toolkit or programmatic destruction and passing whether a 'closing' or 'nop' action
will be performed based on the WindowClosingMode.
For now I postponed this idea .. since it would change the API again,
but may reconsider it after merging the Android 'closing' patch.

- InputEvent.consumedTag -> NEWTEvent.consumedTag

- Window
  - (*) Promote setWindowDestroyNotifyAction(Runnable) to public,
        former WindowImpl.setHandleDestroyNotify(boolean).
    Using a Runnable action for WindowImpl.windowDestroyNotify(boolean)
    allows a setting defined alternative for destroy() and gets rid
    of [ab]using WindowListener.windowDestroyNotify(WindowEvent) for
    lifecycle actions. Used in:
      - GLWindow
      - GLAutoDrawableDelegate impl.

- WindowImpl
  - Respect NEWTEvent.consumedTag for WindowEvents as well

  - (*) Impl. setHandleDestroyNotify(boolean) (see above)

  - (*) destroy() simply sends out pre- and post- destruction Window events,
    where windowDestroyNotify(boolean) sends out the pre-destruction event if NOP.

  - (*) windowDestroyNotify(boolean) is public now, allowing other impl. details
    to follow proper destruction using handleDestroyNotify Runnable (-> NewtCanvasAWT).

- AWTWindowClosingProtocol:
  - addClosingListenerOneShot() -> addClosingListener()
    - calling addClosingListener() at addNotify()
    - calling removeClosingListener() at removeNotify()

  - AWTWindowClosingProtocol ctor taking NOP runnable,
    allowing to send WindowEvent.EVENT_WINDOW_DESTROY_NOTIFY at WindowClosingMode.DO_NOTHING_ON_CLOSE

  - add/remove listener on AWT-EDT

- AWTWindowAdapter
  - Add 'removeWindowClosingFrom(..)',
    allowing to remove window closing event fwd.

  - Also fwd windowClosed in window closing fwd'ing.

- NewtCanvasAWT
  - (*) Utilize AWTWindowClosingProtocol NOP runnable (see above)
    to fwd closing-NOP event to NEWT

  - (*) Unify remove/destroy code in destroyImpl(..)
    - !removeNotify -> destroy NEWT child programatic or as toolkit event
    - removeNotify || windowClosing -> destroy jawtWindow

  - (*) Remove AWTWindowAdapter/AWTParentWindowAdapter's windowClosingListener,
    since we utilize AWTWindowClosingProtocol

- DisplayImpl
  - Adding 'final void dispatchMessage(final NEWTEvent event)'
    allowing to remove the NEWTEventTask wrapping for no reason
    in enqueueEvent(..) if on EDT and waiting.
The file was modified src/newt/classes/com/jogamp/newt/event/NEWTEvent.java (diff)
The file was modified src/newt/classes/jogamp/newt/awt/event/AWTParentWindowAdapter.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/opengl/GLWindow.java (diff)
The file was modified src/newt/classes/jogamp/newt/DisplayImpl.java (diff)
The file was modified src/newt/classes/jogamp/newt/WindowImpl.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/event/WindowListener.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/TestCloseNewtAWT.java (diff)
The file was modified src/jogl/classes/javax/media/opengl/awt/GLCanvas.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/awt/NewtCanvasAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableDelegateOnOffscrnCapsNEWT.java (diff)
The file was modified src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextNewtAWTBug523.java (diff)
The file was modified src/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was addedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLAutoDrawableDelegateNEWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/TestWindowClosingProtocol02NEWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/Window.java (diff)
The file was modified src/nativewindow/classes/com/jogamp/nativewindow/awt/AWTWindowClosingProtocol.java (diff)
The file was modified src/newt/classes/jogamp/newt/driver/awt/WindowDriver.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/TestWindowClosingProtocol03NewtAWT.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/event/awt/AWTWindowAdapter.java (diff)
The file was modified src/nativewindow/classes/javax/media/nativewindow/WindowClosingProtocol.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/event/awt/AWTAdapter.java (diff)
The file was modified src/jogl/classes/com/jogamp/opengl/GLAutoDrawableDelegate.java (diff)
The file was modified make/scripts/tests.sh (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch01NEWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch11NEWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/TestWindowClosingProtocol01AWT.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/event/InputEvent.java (diff)
Commit 3a4892c43be4a9dabba73d42175c2cfa39bd6d8d by Sven Gothel
Fix Bug 677: NEWT/Android: Add support for Android's KeyEvent.KEYCODE_BACK

Original author: Eric Brayet <ericb@daysofwonder.com>
Revised by: Sven Gothel <sgothel@jausoft.com>

I took the freedom to cleanup the three original patches
from https://github.com/Pooouf/jogl.git branch 'bug_677':
  - 7449d4726633d524a3bb79efffd04cfd0ca25e58 (removed by followup patch!)
  - 68c739a4f03e46deecdbb71c125b4586aec08d63 (removes previous patch!)
  - c2813dfc325a1482d18b6fc304e4e483f5633964

Further more I was able to reduce the 'extra' code while utilizing
  - Window's isKeyboardVisible() and using keyboardVisibilityChanged(false)
    to update the hidden keyboard state.
  - Moving the key-handling code to the containing WindowDriver class
    avoiding passing a reference to the inner view.
  - Using AndroidNewtEventFactory for NEWT KeyEvent creation

+++

- Handle KeyEvent.KEYCODE_BACK w/ jogamp.newt.driver.android.WindowDriver.MSurfaceView.onKeyPreIme(..):
    if( soft keyboard is up )
      [1] Update keyboard visibility state and return NEWT KeyEvent.VK_KEYBOARD_INVISIBLE;
    else
      [2] call WindowImpl.windowDestroyNotify(true)

    [3] then cont. processing, i.e. return false;

- Turns out respecting WindowClosingMode might be
  - too complicated
  - interfere w/ Android UI behavior

- AndroidNewtEventFactory
  - createKeyEvent
    - static
    - adding boolean param 'inclSysKeys', if true, KEYCODE_BACK and KEYCODE_HOME are mapped

- Unit tests: GearsES2 + MovieCubeActivity0 shows keyboard if pressure > 0.6f
    - pressure on Android shall be between [0..1], however we have to figure out
      badly calibrated touchpads/Android device where we could experience
      pressure > 2.0f !

    - TODO: API documentation of pressure [0..1]
The file was modified src/test/com/jogamp/opengl/test/android/NEWTGearsES2Activity.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/GearsES2.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/event/KeyEvent.java (diff)
The file was modified src/newt/classes/jogamp/newt/driver/android/event/AndroidNewtEventFactory.java (diff)
The file was modified src/newt/classes/jogamp/newt/driver/android/event/AndroidNewtEventTranslator.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/event/NEWTEvent.java (diff)
The file was modified src/test/com/jogamp/opengl/test/android/MovieCubeActivity0.java (diff)
The file was modified src/newt/classes/jogamp/newt/driver/android/WindowDriver.java (diff)
Commit 01fdd5c564dcb8a7d4f8347f71728f8c2b657cb3 by Sven Gothel
NEWT WindowImpl: Cleanup redundancies in destroy() and windowDestroyNotify(boolean)

- destroy()
  - screen is never null!
  - always attempt to removeScreenReference()

- windowDestroyNotify(boolean)
  - NOP if !isNativeValid() to avoid DESTROY_* events
The file was modified src/newt/classes/jogamp/newt/WindowImpl.java (diff)
Commit b85903ac92be7884e99eb7b85884033d7ea42337 by Sven Gothel
NEWT: Harmonize MouseEvent Pressure (API Change!)

Due to high fluctuation (lack of normalized) pressure values on Android devices,
an option to query the normalized value and access to the current known maximum pressure is required.

MouseEvent:
  - getMaxPressure() returning the [self calibrated] known maximum pressure

  - getPressure(..) -> getPressure(.., boolean normalize) (API Change!)
     - return normalize ? pressure/maxPressure : pressure;
The file was modified src/newt/classes/jogamp/newt/driver/android/event/AndroidNewtEventFactory.java (diff)
The file was modified src/test/com/jogamp/opengl/test/android/MovieCubeActivity0.java (diff)
The file was modified src/newt/classes/com/jogamp/newt/event/MouseEvent.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/GearsES2.java (diff)
Commit 7891d2b8f73afb3a71aea237bc5891f05d1d538f by Sven Gothel
Fix AWT EDT Deadlock in AWTWindowClosingProtocol, regression of commit 808a9a27a8c1c9e0a6701a8dd81d51f8daa8129d
The file was modified src/nativewindow/classes/com/jogamp/nativewindow/awt/AWTWindowClosingProtocol.java (diff)
Commit 33eb58fc25b0e44666f72e5a2abf6e040efba8bf by Sven Gothel
Adapt to GlueGen's relocation of AWTEDTExecutor - GlueGen commit 99a50b38f5650fedca0f207e03706ffa9492e50c
The file was modified src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java (diff)
The file was modified src/jogl/classes/javax/media/opengl/awt/GLCanvas.java (diff)
The file was modified src/jogl/classes/jogamp/opengl/awt/AWTThreadingPlugin.java (diff)
The file was modified src/newt/classes/jogamp/newt/driver/awt/AWTEDTUtil.java (diff)
Commit 9a5e03cc9e028422f8e7c85e875f6db4bedeaaff by Sven Gothel
All AWT Related Unit Tests: Call AWT 'frame.setVisible(..)' and 'frame.pack()' on AWT-EDT - Use dedicated test TestBug572AWT for testing otherwise.
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/TestAWT02WindowClosing.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/TestAWT03GLCanvasRecreate01.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01cAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/TestWindowClosingProtocol03NewtAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsGLJPanelAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/glsl/TestShaderCompilationBug459AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/TestFocus02SwingAWTRobot.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/TestAWTCardLayoutAnimatorStartStopBug532.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/TestGLCanvasAWTActionDeadlock02AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/TestWindowClosingProtocol01AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/text/TestAWTTextRendererUseVertexArrayBug464.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/util/texture/TestTextureSequence01AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyCodesAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/newt/TestSwingAWTRobotUsageBeforeJOGLInitBug411.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting04AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/caps/TestMultisampleES1AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsAWTAnalyzeBug455.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting02AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/swt/TestSWTAccessor03AWTGLn.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/util/texture/TestTexture01AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/acore/TestAWTCloseX11DisplayBug565.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01cSwingAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/parenting/TestTranslucentParentingAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/caps/TestTranslucencyAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGLJPanelAWTBug450.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01bAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/TestJScrollPaneMixHwLw01AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/TestGLCanvasAWTActionDeadlock01AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug461FBOSupersamplingSwingAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/bugs/Issue344Base.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01aAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/TestAWT01GLn.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/acore/TestShutdownCompleteAWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting03AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/bugs/Bug427GLJPanelTest1.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParentingFocusTraversal01AWT.java (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsAWT.java (diff)
Commit 26b9b3f5dd2e6914dd6555dda61d04fac115a4b1 by Sven Gothel
TestBug572AWT: Add test case w/ setting GLCanvas's size and frame.pack() on AWT-EDT and current thread.
The file was modified make/scripts/tests.sh (diff)
The file was modified src/test/com/jogamp/opengl/test/junit/jogl/awt/TestBug572AWT.java (diff)
Commit 7f2637bfe5ef1764882a123a8942e60632730bdf by Sven Gothel
Fix Bug 695: WGLExt.wglChoosePixelFormatARB causes buffer underflow due to a higher reported number of configs than buffer size

"I encountered a case on an NVidia Quadro 3500 fx where the call to
WGLExt.wglChoosePixelFormatARB in WindowsWGLGraphicsConfiguration (currently
line 355) returns 264 in numFormatsTmp despite 256 being passed in for the
maximum number of formats. This results in a buffer underflow on line 368 since
pformatsTmp only has 256 values and it's trying to copy 264 values."

Fixed in WindowsWGLGraphicsConfiguration and WindowsPbufferWGLDrawable.
The file was modified src/jogl/classes/jogamp/opengl/windows/wgl/WindowsPbufferWGLDrawable.java (diff)
The file was modified src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java (diff)