From: Attila Fidan <dev(a)print0.net> If ClipCursor is called while the seat doesn't have a pointer and the call qualifies for locking the pointer, it would have tried to lock a null wl_pointer. --- dlls/winewayland.drv/wayland_pointer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dlls/winewayland.drv/wayland_pointer.c b/dlls/winewayland.drv/wayland_pointer.c index 6c852292c1d..509301cada4 100644 --- a/dlls/winewayland.drv/wayland_pointer.c +++ b/dlls/winewayland.drv/wayland_pointer.c @@ -688,9 +688,10 @@ static void wayland_pointer_update_constraint(struct wl_surface *wl_surface, } needs_lock = wl_surface && (((confine_rect || covers_vscreen) && - !pointer->cursor.wl_surface) || force_lock); + !pointer->cursor.wl_surface) || force_lock) && + pointer->wl_pointer; needs_confine = wl_surface && confine_rect && pointer->cursor.wl_surface && - !force_lock; + !force_lock && pointer->wl_pointer; if (!needs_confine && pointer->zwp_confined_pointer_v1) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7857