Use last event time when calling XSetInputFocus #1136
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes a race condition when WM_TAKE_FOCUS message is sent to
client windows, with the last event time as time parameter. The
client might react to the WM_TAKE_FOCUS message with a XSetInputFocus
call, and is expected to pass the message time as time parameter.
As fvwm concurrently calls XSetInputFocus with CurrentTime, it causes
a race condition and sometimes the X server gives focus to fvwm
window, stealing the focus from the client window.
This causes rare and random test failures with Wine non-regression test suite, as we run it on fvwm by default. The workarounds are piling up on our side, in the tests but it would probably be better to fix it here. Fwiw I also opened fvwmorg/fvwm#101 on fvwm2 some time ago.