And synchronize with thread display when necessary.
The rationale is that client_window are created using the gdi_display,
and OpenGL/Vulkan using gdi_display it is probably safer that any X11
request for them is done on the gdi_display.
Then we need to properly synchronize the requests that involve client_window
and whole_window, such as reparenting requests, as whole_window is created,
and related requests make, using the thread display.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3241
`getpeername()` is currently handled in ntdll. This merge request changes ntdll to forward `getpeername()` to wineserver. The implementation utilises new `peer_addr` and `peer_addr_len` fields in wineserver's `struct sock`.
This fixes multiple `todo_wine`s in `ws2_32/tests` and allows for more accurate peer names to be provided in case the address the socket is bound to on the Unix side does not match what `bind()` was called with on the Windows side.
*This merge request was originally intended to be included in !2786 (Add support for AF_UNIX sockets) but was split into its own merge request because this is not an insignificant change.*
--
v13: server: Move getpeername() implementation from ntdll/unix.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3074