Rémi Bernon (@rbernon) commented about dlls/winewayland.drv/wayland_pointer.c:
- RECT window_clip;
- TRACE("clip=%s reset=%d\n", wine_dbgstr_rect(clip), reset);
- if (NtUserGetWindowThread(hwnd, NULL) != GetCurrentThreadId())
- {
pthread_mutex_lock(&pointer->mutex);
if (pointer->zwp_confined_pointer_v1)
{
zwp_confined_pointer_v1_destroy(pointer->zwp_confined_pointer_v1);
pointer->zwp_confined_pointer_v1 = NULL;
TRACE("Unconfining due to foreground thread mismatch\n");
}
pthread_mutex_unlock(&pointer->mutex);
return TRUE;
- }
How can it happen exactly that we have an active pointer grab but still end up with the pointer entering a different window (or even a different thread's)? Does it even matter? And if it does, do we actually need to unconfine the cursor then?