xdg-shell: configure reply race for set_maximized/set_fullscreen
The set_maximized
request specifies:
After requesting that the surface should be maximized, the compositor will respond by emitting a configure event. Whether this configure actually sets the window maximized is subject to compositor policies.
However, a client cannot reliably use the configure
reply to figure out whether the compositor has accepted or declined the request. Consider the following:
- Client sends
set_maximized
. - Compositor sends an unrelated
configure
event which doesn't contain themaximized
state. - Client receives the
configure
event, and assumes the compositor has denied theset_maximized
request. - Compositor receives and accepts the
set_maximized
request, sends a newconfigure
event in reply to theset_maximized
request, but it's too late already.
This isn't just theoretical, I've seen it happen in practice.
Thus, forcing compositors to reply to a set_maximized
request is misleading and fragile, and should probably be removed.