More details on the issue report.
- Look up the client window of a WM frame when it's mapped instead of when
it's created, for better reliability.
- Fix a warning when building.
I found compton segfaults sometimes when starting from .xinitrc.
Debugging reveals my conky window was just reparented to a fvwm's
frame window before compton picked up a FocusOut event on this conky
window that has just been destroyed in the event queue. find_win()
call in ev_focus_in/out() returned a NULL pointer. When it tried to
use the pointer segfault happens.
- Add extra check to ev_focus_in/out() to stop the segfault.
- Reset window event mask on window reparenting to a non-root window to
minimize wrong events.
- More abstraction for determining window event mask.
Use find_toplevel() to find out the WM frame of a client window. I
didn't noticed it beforehand. Fallback to the old method as compton does
not always get correct client windows.
- Clean up find_client_win() a bit. A BFS search algorithm could be more
optimal yet it requires a queue implementation.
More information in the issue report.
- Let window opacity affect the opacity of its shadow and frames even if
-z is enabled.
- Check for the range of -o to eliminate potential segfault.
Take care of failure of XQueryTree() to prevent it from causing a
double-free crash. This usually happens when X is initializing and windows
are constantly changing.
- Change all #if DEBUG_XXX directives to #ifdef, thus making it
possible to directly enable debugging options with CFLAGS
(-DDEBUG_XXX).
- Print timestamp before event debugging messages.
More details in the bug report.
- Rewritten much of the opacity calculation, code cleanup.
- Commandline switch --inactive_opacity_override to restore the old
behavior in which inactive_opacity has higher priority than
_NET_WM_OPACITY.
- Use getopt_long() instead of getopt() for argument parsing, making
long options possible.
- Add support of colored shadows with 3 commandline switches.
More descriptions on issue #36.
- Listens ShapeNotify event to get around the Chromium window painting
issues.
- Adds dependency on X Shape extension.
- Adds a few functions for convenience, so a bit code clean up.
- Better event debug support, adds restack_win() debug.