| Summary: | JAWTWindow: Unsatisfying Visibility Computation (was: Canvas in CardLayout always visible) | ||
|---|---|---|---|
| Product: | [JogAmp] Jogl | Reporter: | Gene <gene.ressler> |
| Component: | macosx | Assignee: | Sven Gothel <sgothel> |
| Status: | RESOLVED FIXED | ||
| Severity: | critical | CC: | andres.colubri, fzanelli |
| Priority: | --- | ||
| Version: | 2 | ||
| Hardware: | pc_x86_64 | ||
| OS: | macosx | ||
| Type: | --- | SCM Refs: |
071bdd6ce9f8c41ccecdbf8bc74f276ccd7ff651
d2f50f2ed523aa8443f647e46aeecc09fa27583d
9dcaf86ad6ae08e60c68abd4c069f3ab19807854
367b704b448b4ebabcfc62cc29e61fa5760514d1
|
| Workaround: | --- | ||
| Bug Depends on: | |||
| Bug Blocks: | 816, 849, 889, 906, 928 | ||
|
Description
Gene
2014-01-05 08:29:34 CET
Can you reproduce with the derived unit test ? com.jogamp.opengl.test.junit.jogl.acore.anim.TestAWTCardLayoutAnimatorStartStopBug532 I double check w/ latest tip .. Have you tested w/ latest aggregated build ? <http://jogamp.org/deployment/archive/master/gluegen_759-joal_509-jogl_1195-jocl_901/> You can always check: <http://jogamp.org/deployment/archive/master/?C=M;O=D> See .. <http://forum.jogamp.org/Java-7-Java3D-Borderlayout-problem-tp4031082p4031086.html> Tested 'TestAWTCardLayoutAnimatorStartStopBug532' on OSX 10.9 (CALayer) .. Experience: 1- LABEL: Shows 2- Switch to GLCanvas 3- GLCanvas shows 4- Switch to LABEL 5- LABEL Shows 6- Switch to GLCanvas 7- Nothing Shows ** BUG ** Can you confirm that the above is the issue at hand ? (In reply to comment #3) > Tested 'TestAWTCardLayoutAnimatorStartStopBug532' on OSX 10.9 (CALayer) .. ... Note - I also tested the following manually without any issue on OSX and X11: # Simple GLCanvas setVisible on/off # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug664GLCanvasSetVisibleSwingAWT $* # # GLCanvas moving between JTabbedPanel's tabs # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816JTabbedPanelVisibilityB849B878AWT $* # # GLCanvas/AWT Checkbox Visibility # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos03aB729AWT $* # # GLCanvas/AWT Checkbox Visibility (on parent's Panel) # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos03bB849AWT $* # # GLCanvas/Swing Checkbox Visibility (on parent's JPanel) # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos03cB849AWT $* 071bdd6ce9f8c41ccecdbf8bc74f276ccd7ff651
Simplify JAWTComponentListener's HierarchyListener:
- Don't interfere w/ Component's visibility anymore!
This shall reduce sideeffects.
Utilize 'isShowing' in each Component specialization, i.e. GLCanvas.
- On SHOWING_CHANGED if a parent caused a change
of the tracked components showing state,
propagate it to the offscreen-layer!
- Remove all other complicated states!
GLCanvas, GLJPanel:
- Instead of 'isVisible()' use 'showing state',
since only the 'showing state' reflects 'true' visibility
throughout the hierarchy.
- Add HierarchyListener and track volatile showing state
to be used instead of 'isVisible'.
Using a cached showing state is more efficient
than quering 'isShowing()' all the time!
NewtCanvasAWT:
- Use 'isShowing()' instead of 'isVisible(), see above
d2f50f2ed523aa8443f647e46aeecc09fa27583d
AWTParentWindowAdapter/AWTRobotUtil: Use 'isShowing()' instead of 'isVisible()'
determining actual on-screen showing state
Manually tested: # # Simple GLCanvas setVisible on/off # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug664GLCanvasSetVisibleSwingAWT $* # # GLCanvas moving between CardLayout's JPanels # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.acore.anim.TestAWTCardLayoutAnimatorStartStopBug532 $* # # GLCanvas moving between JTabbedPanel's tabs # OK (X11, OSX) testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816JTabbedPanelVisibilityB849B878AWT $* # # GLCanvas/AWT Checkbox Visibility # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos03aB729AWT $* # # GLCanvas/AWT Checkbox Visibility (on parent's Panel) # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos03bB849AWT $* # # GLCanvas/Swing Checkbox Visibility (on parent's JPanel) # OK (X11, OSX) #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos03cB849AWT $* #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos01AWT $* #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos02AWT $* #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816GLCanvasFrameHoppingB849B889AWT $* #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos04aAWT $* #testawt com.jogamp.opengl.test.junit.jogl.awt.TestBug816OSXCALayerPos04bAWT $* 9dcaf86ad6ae08e60c68abd4c069f3ab19807854 JAWTWindow.JAWTComponentListener: Minor Cleanup 367b704b448b4ebabcfc62cc29e61fa5760514d1 OSXMisc CALayer::FixCALayerLayout: Fix visible:=false case, i.e. don'r override cached visibleOpacity w/ forced zero when called twice |