[PATCH xserver 00/12] xwayland: Pointer confinement and warping
Peter Hutterer
peter.hutterer at who-t.net
Fri Sep 9 08:07:09 UTC 2016
On Thu, Sep 08, 2016 at 06:46:29PM +0800, Jonas Ådahl wrote:
> Hi,
>
> This series adds support for raw pointer events, pointer confinement and
> introduces pointer warp emulation to implement pointer-lock like features
> clients use pointer warping for.
>
> Raw pointer events is done by adding a new valuator mask setter that takes both
> an absolute value and an unaccelerated value. It is similar to that of
> valuator_mask_set_unaccelerated() except that it takes an absolute pointer
> coordinate instead of a relative coordinate.
>
> Confinement is pretty straight forward; if a client tries to grab a pointer
> with a confineTo set to some window, this will be translated into confining the
> pointer using the pointer constraints protocol.
>
> Pointer warping emulation works roughly by locking the pointer whenever an X11
> client tries to warp the pointer while the cursor is invisible. See the
> corresponding patch for further details.
>
> Note that the compositor side implementation of the pointer constraints
> protocol need to special case X11 clients due to various reasons. Thus, an
> unpatched mutter/weston will not be able to enable confinement and warp
> emulation to work properly. mutter/gnome-shell patches, however, are available
> here[0].
>
> All of this seems to work fairly Ok on various games I have tested. I've tested
> SDL 2 using the X11 backend (ioquake3), GLFW using the X11 backend, OpenTTD,
> Half Life 1, Half Life 2, Shadow Warrior, Trine 2, Portal, and they seem to
> work with no obvious flaws right now. However given the nature of this
> approach, I expect various things needs to be tweaked to get all applications
> working. Also special thanks to Krzysztof Sobiecki for helping out and for
> testing a lot of games finding.
>
> While I realize it is pretty late in the development schedule, assuming these
> patches introduces too much changes for the coming release, would it be
> possible to land at least the ABI breaking ones (1-3?) so that it is possible
> to distribute a patched version that will be ABI compatible with the coming
> release?
01-11 are Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>, though
it's Friday evening here... I'll try to get to 12 tomorrow.
Keith, I think the ABI changes should go in before we lock down, this is a
pretty important feature for the Wayland transition and our release cycles
aren't exactly predictable at this point.
Cheers,
Peter
> Jonas
>
> [0] https://github.com/jadahl/mutter/commits/wip/xwayland-pointer-warps
>
>
> Jonas Ådahl (11):
> dix: Introduce CursorWarpedTo vfunc in Screen
> dix: Incroduce CursorConfinedTo vfunc in Screen
> dix: Add valuator_mask_set_absolute_unaccelerated
> xwayland: Bind the relative pointer manager
> xwayland: Split up device class init/release into functions
> xwayland: Dispatch pointer motion events on wl_pointer.frame if
> possible
> xwayland: Set unaccelerated pointer motion delta if available
> xwayland: Put getting a xwl_window from a Window in a helper
> xwayland: Bind pointer constraints global
> xwayland: Translate a pointer grab with confineTo to pointer
> confinement
> xwayland: Add pointer warp emulator
>
> Krzysztof Sobiecki (1):
> xwayland: Add a new input device used for pointer warping/locking
>
> configure.ac | 4 +-
> dix/events.c | 8 +
> dix/inpututils.c | 13 +
> hw/xwayland/.gitignore | 4 +
> hw/xwayland/Makefile.am | 28 +-
> hw/xwayland/xwayland-cursor.c | 7 +
> hw/xwayland/xwayland-input.c | 674 +++++++++++++++++++++++++++++++++++++-----
> hw/xwayland/xwayland.c | 89 +++++-
> hw/xwayland/xwayland.h | 43 +++
> include/input.h | 5 +-
> include/scrnintstr.h | 14 +
> 11 files changed, 815 insertions(+), 74 deletions(-)
>
> --
> 2.7.4
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list