draw the root pixmap, and bind the glxpixmap to the texture only once NOTE: derek please check my use of glTexEnvi (it seems to be working but idk) root pixmap comes from _XROOTPMAP_ID and ESETROOT_PMAP_ID the glxpixmap only needs to be bound to the texture once after the glxpixmap is created, so do that rather than every time we draw the texture. added create_glx_pixmap(), bind_glx_pixmap(), and destroy_glx_pixmap() functions in composite.c to help wth this process added a "bound" variable to ObWindow that tracks if the glxpixmap was successfully bound to the texture, so when we destroy the glxpixmap, we can tell if we should unbind/release it from the texture
Redraw the screen when a ObWindow is destroyed, but not on every related event We won't get an event we recognize is a window if we destroy the window (such as a MenuFrame going away), as the event will no longer be tracable to that window. Also don't redraw on every map/unmap/configurenotify we see, just ones for the top-level windows.
Fix stacking of unmanaged windows and managing windows on restart. keep inputonly windows in the stacking order create hashtables in stacking.[ch] to find windows in the stacking lists by their window id make the screen support window be an obwindow since it is a child of root and so windows can stack relative to it. allow unmanaged windows to change their stacking order and track the changes for display on restart manage unmapped windows as "unmanaged" as well as override-redirect windows (the code paths here changed a fair bit, allowing fewer repetitive XGetWindowAttributes calls) adds a ObStackingIter data structure and functions in stacking.[ch] that allow you to iterate through all the windows (managed and unmanaged) together in the order they should appear on screen.
Fix restart and unmanaging windows in composite When restarting, catch unmapped windows as ObUnmanaged objects When unmanaging a client, ignore the ReparentNotify to root, rather than thinking the unmanaged window is now embedded somewhere Also add some ob_debug's for unmanaged event handling