Possibly also protocol support but honestly I find that these checks everywhere are just making the code uglier. ...
It's not clear to me if this comment is saying that you dislike that we have such checks in this MR (we don't, see below), or that you would be in general against adding such checks.
In any case, to be clear, this MR doesn't introduce any optional protocols. We enforce this by checking that we have the `zwp_pointer_constraints_v1` and `zwp_relative_pointer_manager_v1` globals in `wayland_process_init()` and bail out otherwise.
The code in `wayland_pointer_update_constraint()` enables/disables pointer locking/confinement/relative motion, which is expressed in the protocol with the creation/destruction of the `zwp_(locked|confined)_pointer_v1` and `zwp_relative_pointer_v1` objects for a particular `wl_pointer`.