v2 with several significant changes:
* Added forgotten protocol .xml files * Added comment to explain why we clip relative motion dx/dy to window size. * Ignore 'reset' value, only check for a valid 'clip' in ClipCursor. * Use the foreground window (instead of current pointer focus) as the target of clipping. * Ensure we get the virtual screen rect in thread dpi. * Lock instead of confining the pointer if the confine area is smaller than the client area and the cursor is hidden, to make it easier to actually enable the constraints for mouselook. * Take pointer constraint state into account to decide whether to switch to/from relative motion. * Update the pointer constraint when the window size/position is updated.
The last point required some code refactoring (see new functions `wayland_surface_calc_constraint` and `wayland_pointer_update_constraint`, to make the constraints related functionality available outside of `wayland_pointer.c` and in a manner that allows us to still avoid double locking of wayland_surface/wayland_pointer.