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.
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).