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 |