This MR introduces support for basic window management in the Wayland driver.
A summary of the commits (but see commit messages for more info):
1. Replace double locking during `wayland_surface` destruction (to protect `xdg_surface` user data) with a simpler mechanism, since we established in the last MR that we don't need to worry about HWND recycling. 2. Support compositor initiated window closing. 3. Respect compositor size hints. 4. Handling/syncing of maximized state, requested by either the compositor or app/Wine. 5. Interactive window moving (but only in the compositor virtual space, see notes below!) 6. Interactive window resizing.
A few notes:
1. At the moment, the driver doesn't change the position of windows in the Windows virtual screen space, since Wayland doesn't provide any relevant position information. This can lead to situations where parts of the window become apparently inaccessible to mouse input, because although those parts are visible from a Wayland perspective they are outside the Windows virtual screen. In future MRs I will provide mitigations/workarounds for this fundamental incompatibility between Win32 and Wayland.
2. To support interactive window moving/resizing, both the `xdg_toplevel` and the `wl_seat` need to remain valid during our request, so we introduce a double lock to ensure their concurrent validity.
Thanks!
-- v2: winewayland.drv: Fix removal of wl_seat globals.