Michael Stapelberg 019ae6d06c Bugfix: don’t remove SubstructureRedirect event mask temporarily
This fixes race conditions, for example when i3bar gets reconfigured
after the available outputs change. In that specific case, i3bar sends a
ConfigureWindow request (see
b5693d6fb3/i3bar/src/xcb.c (L376))
which normally is turned into a ConfigureRequest that i3 largely
ignores, only the dock client’s height is considered (see
b5693d6fb3/src/handlers.c (L390)).

Turning ConfigureWindow into ConfigureRequest is only done when the
SubstructureRedirect event mask is set, and because we temporarily
removed _all_ events from our mask, the ConfigureWindow request went
through unmodified.

This in turn lead to the i3bar client window (not its decoration frame)
being positioned at e.g. y=1304, whereas dock client windows should
always end up at x=0 y=0 within their decoration frame. The result of
the i3bar client window being out of the visible space was either a
black i3bar or graphics corruption.

This also fixes issue #1904, I think. I couldn’t reproduce issue #1904
specifically, but when i3bar is in the misconfigured state, it will
receive a VisibilityNotify event, telling i3bar that it is obscured.
This would explain why i3bar sent a SIGSTOP in issue #1904.

fixes #1904
2015-12-22 22:33:37 +01:00
2015-09-30 09:03:34 +02:00
2015-12-20 13:12:37 +01:00
2015-11-23 22:18:02 +01:00
2015-11-07 14:28:45 -05:00
2015-11-02 17:32:04 -05:00
2011-08-28 17:44:42 +02:00
2015-11-22 19:57:46 +01:00
2011-08-28 17:44:42 +02:00
2015-09-30 08:55:07 +02:00
2015-11-19 13:32:35 +01:00
Description
No description provided
18 MiB
Languages
C 58.4%
Perl 36%
Raku 2.6%
Ruby 1.2%
Shell 0.7%
Other 1.1%