Diffusion KWin 985601e0a41a

[wayland] Queue XDG configure requests when resizing toplevel interactively

Authored by davidedmundson on Apr 9 2019, 10:13 AM.

Description

[wayland] Queue XDG configure requests when resizing toplevel interactively

Summary:
When resizing a window particularly from the left side, we need to
co-ordinate moving the window with when we get the resized buffer.

The code in AbstractClient::handleMoveResize checks
isWaitingForResizSync to make sure we never send more than one resize
request at a time to keep that in sync.

This makes sense on X and wl_shell_surface, but not on XDGShell where we
can track which resize events have been handled by the client.

ShellClient already keeps a stack of our pending configure requests and
handles everything appropriately, we don't need to block.

This results in a smoother dragging experience and avoids a potential
deadlock currently seen when a client may not reply to a no-op configure
request.

CCBUG: 403376

Test Plan: Async ack handling is covered by existing unit tests

Reviewers: KWin, zzag

Reviewed By: KWin, zzag

Subscribers: zzag, kwin

Tags: KWin

Differential Revision: https://phabricator.kde.org/D20397