Rémi Bernon (@rbernon) commented about dlls/winewayland.drv/wayland_pointer.c:
TRACE("Unconfining from hwnd=%p\n", pointer->constraint_hwnd);zwp_confined_pointer_v1_destroy(pointer->zwp_confined_pointer_v1);pointer->zwp_confined_pointer_v1 = NULL;if (constraint == WAYLAND_POINTER_CONSTRAINT_NONE)pointer->constraint_hwnd = NULL;- }
- if (constraint != WAYLAND_POINTER_CONSTRAINT_MAYBE_LOCK &&
pointer->zwp_locked_pointer_v1)- {
TRACE("Unlocking from hwnd=%p\n", pointer->constraint_hwnd);zwp_locked_pointer_v1_destroy(pointer->zwp_locked_pointer_v1);pointer->zwp_locked_pointer_v1 = NULL;if (constraint == WAYLAND_POINTER_CONSTRAINT_NONE)pointer->constraint_hwnd = NULL;- }
Here you'd just have an if/else based on cursor visibility.
Possibly also protocol support but honestly I find that these checks everywhere are just making the code uglier. We should decide on a basic set of required protocols and be done with it, Wayland is about moving things foward isn't it?
Compositors should implement the required protocols for Wine to work. I think we're already going to have enough trouble with the *non-existent-but-very-necessary* features to not bother about the *existing-but-maybe-not-implemented* ones.