When we are clipping (due to fullscreen), certain operations are bugged (such as creating another window on top, grabbing the window during a size-move operation, changing mouse capture, etc) so we must temporarily unclip first.
Seems unclipping it temporarily during such operation is enough to fix this.
This probably wasn't very obvious in practice because most times "fullscreen" means a single non-resizeable window with no menus and so on (e.g. fullscreen games), but that's not always the case.
--
v3: win32u: Don't clip while capturing mouse pointer.
winex11: Ungrab clipping window when capturing mouse pointer.
winex11: Don't clip while doing move/resize dragging.
winex11: Don't clip while creating X Window.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1153
Zebediah Figura (@zfigura) commented about dlls/ws2_32/tests/sock.c:
> +
> + ret = listen(listener, 1);
> + ok(!ret, "Could not listen on Unix socket: %lu\n", GetLastError());
> +
> + client = socket(AF_UNIX, SOCK_STREAM, 0);
> + ok(client != INVALID_SOCKET, "Failed to create second Unix socket: %lu\n",
> + GetLastError());
> +
> + clientThread = CreateThread(NULL, 0, test_afunix_client_connect_thread,
> + &(struct afunix_thread_param){ client, addr }, 0, NULL);
> + ok(clientThread != NULL, "CreateThread failed unexpectedly: %ld\n", GetLastError());
> + server = accept(listener, NULL, NULL);
> + ok(server != INVALID_SOCKET, "Could not accept Unix socket connection: %lu\n",
> + GetLastError());
> +
> + WaitForSingleObject(clientThread, 1000);
If you're going to use a thread you should check this return value; if it fails then that means we have a bug in the implementation. We're also missing a CloseHandle().
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35925
Zebediah Figura (@zfigura) commented about dlls/ws2_32/socket.c:
>
> if (!(sync_event = get_sync_event())) return -1;
>
> - params = malloc( sizeof(int) + len );
> - ret_addr = malloc( len );
> + if (addr->sa_family == AF_UNIX && *addr->sa_data)
Accessing sa_data in this way is convenient, but looks wrong. I'd rather just see the cast to sockaddr_un written out anyway.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35919