Bug 849

Summary: AWT GLAutoDrawables (JAWTWindow) shall honor it's parent visibility state
Product: [JogAmp] Jogl Reporter: Sven Gothel <sgothel>
Component: awtAssignee: Sven Gothel <sgothel>
Status: RESOLVED FIXED    
Severity: enhancement    
Priority: ---    
Version: 2   
Hardware: All   
OS: all   
Type: --- SCM Refs:
e33e6374e0be0454f7e9732b5f897f84dbc3c4dc
Workaround: ---
Bug Depends on: 878, 928, 937    
Bug Blocks: 729, 889, 906    

Description Sven Gothel 2013-10-06 17:47:27 CEST
The regular AWT code (X11, gdi, ..) does not set e.g. GLCanvas invisible,
if it's parent was set invisible. 

No propagation of the visibility state is being performed other than the hierarchy listener!

I have checked w/ OpenJDK source code .. indeed only a hierarchy event is being propagated.
Hence GLCanvas still assumes it is visible and GL operations are still performed.

So we need JAWTWindow to cache visibility states,
i.e. visibility-self and visibility-by-parent.
Comment 1 Sven Gothel 2013-10-06 21:28:13 CEST
    Bug 729, Bug 849: Honor JAWTWindow's [parent] visibility state
    
    JAWTWindow snoops HierarchyEvents for SHOWING_CHANGED to
    track local component's visibility state as well as it's global visibility state.
    The later is determined by it's parent's visibility change.
    
    If 'removeNotify()' is called, component's visibility is reset to it's local visibility state.
    
    Fixes OSX CALayer component's visibility if parent's visibility changes (Bug 729).
    
    Fixes continuous GL rendering if parent is invisible (Bug 849).