When we want to change a client's size and position together we have to
request the client becomes a new size and only then move the window to
the new location.
Currently we process the new position the next time the buffer updates,
but with no guarantee that it has actually tried to resize/whatever yet.
The client could be providing a new buffer just because the contents
XDGShell has an acked serial designed to keep everything precisely in
sync. A surface represents the last configure that was acked.
This patch tracks the pending position for each configure and applies it
WL_shell does not have this mechanism, so behaviour is kept the same as
This is a pre-requisite to syncing maximisedState/isFullScreen with the
Potentially we could remove the isWaitingForResizeSync checks when
resizing and it will still resize smoothly.