Bug 849 - AWT GLAutoDrawables (JAWTWindow) shall honor it's parent visibility state
Summary: AWT GLAutoDrawables (JAWTWindow) shall honor it's parent visibility state
Status: RESOLVED FIXED
Alias: None
Product: Jogl
Classification: JogAmp
Component: awt (show other bugs)
Version: 2
Hardware: All all
: --- enhancement
Assignee: Sven Gothel
URL:
Depends on: 878 928 937
Blocks: 729 889 906
  Show dependency treegraph
 
Reported: 2013-10-06 17:47 CEST by Sven Gothel
Modified: 2014-01-12 04:29 CET (History)
0 users

See Also:
Type: ---
SCM Refs:
e33e6374e0be0454f7e9732b5f897f84dbc3c4dc
Workaround: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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).