https://bugs.kde.org/show_bug.cgi?id=514628

Zamundaaa <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REPORTED                    |CONFIRMED
     Ever confirmed|0                           |1

--- Comment #6 from Zamundaaa <[email protected]> ---
It looks like a bug in the game to me. Here it locks the pointer, and leaves it
locked for some time
> [2128517.570] {Default Queue}  -> 
> zwp_pointer_constraints_v1#14.lock_pointer(new id zwp_locked_pointer_v1#69, 
> wl_surface#46, wl_pointer#41, nil, 2)
> [2128517.573] {Default Queue}  -> wl_pointer#41.set_cursor(34341, nil, 0, 0)
> [2128523.645] {Default Queue} zwp_locked_pointer_v1#69.locked()

but it never sets the position hint on that, and instead does
> [2129776.851] {Default Queue}  -> zwp_locked_pointer_v1#69.destroy()
> [2129776.856] {Default Queue}  -> 
> zwp_pointer_constraints_v1#14.lock_pointer(new id zwp_locked_pointer_v1#68, 
> wl_surface#46, wl_pointer#41, nil, 2)
> [2129776.859] {Default Queue}  -> 
> zwp_locked_pointer_v1#68.set_cursor_position_hint(3153.00000000, 565.00000000)
> [2129776.862] {Default Queue}  -> zwp_locked_pointer_v1#68.destroy()
> [2129776.867] {Default Queue}  -> wl_pointer#41.set_cursor(34341, 
> wl_surface#57, 0, 0)
> [2129776.873] {Default Queue}  -> 
> zwp_pointer_constraints_v1#14.lock_pointer(new id zwp_locked_pointer_v1#70, 
> wl_surface#46, wl_pointer#41, nil, 2)
> [2129776.875] {Default Queue}  -> 
> zwp_locked_pointer_v1#70.set_cursor_position_hint(960.00000000, 540.00000000)
> [2129776.876] {Default Queue}  -> zwp_locked_pointer_v1#70.destroy()

which is to say, instead of just setting the position hint before unlocking, it
- unlocks the pointer
- locks it again
- sets the position hint to a position that's completely out of the window
- unlocks the pointer again
- locks the pointer again
- sets the position hint to what would be the center of a 1080p window
- unlocks the pointer again

There's two issues with this:
1. setting the position outside of the window is wrong (obviously). We can add
checks in KWin to prevent this from causing issues though
2. lock + set position + unlock without waiting for the pointer to be actually
locked is not something you can expect to work reliably

If the game wants to warp the cursor, it should use the pointer-warp-v1
protocol, but really it should set the correct position hint before unlocking
the pointer in the first place.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to