[PATCH weston v3 1/5] protocol: Add _wl_pointer_gestures (swipe/pinch) protocol
Bryce Harrington
bryce at osg.samsung.com
Thu Feb 18 04:37:17 UTC 2016
Hi Carlos,
I think we could go ahead and finally land this patchset, if you would
be able to bring it up to date with the moved and renamed protocol
(_wl_pointer_gestures vs zwp_pointer_gestures_v1)?
Thanks,
Bryce
On Wed, Aug 26, 2015 at 05:57:47PM -0700, Bryce Harrington wrote:
> This patchset is looking reasonably ripe. If pq and/or derek give
> thumbs up, and you get a v4 turned around quickly (i.e. before the end
> of the month) with the changes mentioned in this thread, I wouldn't mind
> landing this for 1.9-beta. This seems relatively safe to me, as it
> isn't invasive into core code, and just adds an experimental protocol +
> implementation + example client support.
>
> Bryce
>
> On Fri, Jul 31, 2015 at 03:59:51PM +0200, Carlos Garnacho wrote:
> > The whole feature is exposed by the wl_pointer_gestures global
> > resource, which can be used to obtain individual swipe/pinch
> > gesture interfaces for a given wl_pointer.
> >
> > The lifetime and progress of gestures is maintained by the separate
> > wl_pointer_gesture_pinch and wl_pointer_gesture_swipe interfaces,
> > each of these has begin/update(optional)/end phases, as transmitted
> > by their events.
> >
> > The protocol is marked as unstable, an is thus '_' prefixed, this
> > prefix will be removed when the protocol is deemed stable.
> >
> > v3: Reword exclusiveness of gestures and client-side semantics.
> > specify further the "cancelled" field in end events. Renamed
> > XML file to be more specific.
> > v2: Moved to an standalone xml
> >
> > Signed-off-by: Carlos Garnacho <carlosg at gnome.org>
> > Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
> > ---
> > Makefile.am | 3 +
> > protocol/pointer-gestures.xml | 172 ++++++++++++++++++++++++++++++++++++++++++
> > 2 files changed, 175 insertions(+)
> > create mode 100644 protocol/pointer-gestures.xml
> >
> > diff --git a/Makefile.am b/Makefile.am
> > index 76ab546..6334865 100644
> > --- a/Makefile.am
> > +++ b/Makefile.am
> > @@ -96,6 +96,8 @@ weston_SOURCES = \
> > src/weston-egl-ext.h
> >
> > nodist_weston_SOURCES = \
> > + protocol/pointer-gestures-protocol.c \
> > + protocol/pointer-gestures-server-protocol.h \
> > protocol/screenshooter-protocol.c \
> > protocol/screenshooter-server-protocol.h \
> > protocol/text-cursor-position-protocol.c \
> > @@ -1298,6 +1300,7 @@ BUILT_SOURCES += \
> > protocol/text-client-protocol.h
> >
> > EXTRA_DIST += \
> > + protocol/pointer-gestures.xml \
> > protocol/desktop-shell.xml \
> > protocol/screenshooter.xml \
> > protocol/text.xml \
> > diff --git a/protocol/pointer-gestures.xml b/protocol/pointer-gestures.xml
> > new file mode 100644
> > index 0000000..1bca8f7
> > --- /dev/null
> > +++ b/protocol/pointer-gestures.xml
> > @@ -0,0 +1,172 @@
> > +<protocol name="pointer_gestures">
> > + <interface name="_wl_pointer_gestures" version="1">
> > + <description summary="touchpad gestures">
> > + A global interface to provide semantic touchpad gestures for a given
> > + pointer.
> > +
> > + Two gestures are currently supported: swipe and zoom/rotate.
> > + All gestures follow a three-stage cycle: begin, update, end and
> > + are identified by a unique id.
> > +
> > + Warning! The protocol described in this file is experimental. Each
> > + version of this protocol should be considered incompatible with any
> > + other version, and a client binding to a version different to the one
> > + advertised will be terminated. Once the protocol is declared stable,
> > + compatibility is guaranteed, the '_' prefix will be removed from the
> > + name and the version will be reset to 1.
> > + </description>
> > +
> > + <request name="get_swipe_gesture">
> > + <description summary="get swipe gesture">
> > + Create a swipe gesture object. See the
> > + wl_pointer_gesture_swipe interface for details.
> > + </description>
> > + <arg name="id" type="new_id" interface="_wl_pointer_gesture_swipe"/>
> > + <arg name="pointer" type="object" interface="wl_pointer"/>
> > + </request>
> > +
> > + <request name="get_pinch_gesture">
> > + <description summary="get pinch gesture">
> > + Create a pinch gesture object. See the
> > + wl_pointer_gesture_pinch interface for details.
> > + </description>
> > + <arg name="id" type="new_id" interface="_wl_pointer_gesture_pinch"/>
> > + <arg name="pointer" type="object" interface="wl_pointer"/>
> > + </request>
> > + </interface>
> > +
> > + <interface name="_wl_pointer_gesture_swipe" version="1">
> > + <description summary="a swipe gesture object">
> > + A swipe gesture object notifies a client about a multi-finger swipe
> > + gesture detected on an indirect input device such as a touchpad.
> > + The gesture is usually initiated by multiple fingers moving in the
> > + same direction but once initiated the direction may change.
> > + The precise conditions of when such a gesture is detected are
> > + implementation-dependent.
> > +
> > + A gesture consists of three stages: begin, update (optional) and end.
> > + There cannot be multiple simultaneous pinch or swipe gestures on a
> > + same pointer/seat, how compositors prevent these situations is
> > + implementation-dependent.
> > +
> > + A gesture may be cancelled by the compositor or the hardware.
> > + Clients should not consider performing permanent or irreversible
> > + actions until the end of a gesture has been received.
> > + </description>
> > +
> > + <request name="destroy" type="destructor">
> > + <description summary="destroy the pointer swipe gesture object"/>
> > + </request>
> > +
> > + <event name="begin">
> > + <description summary="multi-finger swipe begin">
> > + This event is sent when a multi-finger swipe gesture is detected
> > + on the device.
> > + </description>
> > + <arg name="serial" type="uint"/>
> > + <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
> > + <arg name="surface" type="object" interface="wl_surface"/>
> > + <arg name="fingers" type="uint" summary="number of fingers"/>
> > + </event>
> > +
> > + <event name="update">
> > + <description summary="multi-finger swipe motion">
> > + This event is sent when a multi-finger swipe gesture changes the
> > + position of the logical center.
> > +
> > + The dx and dy coordinates are relative coordinates of the logical
> > + center of the gesture compared to the previous event.
> > + </description>
> > + <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
> > + <arg name="dx" type="fixed" summary="delta x coordinate in surface coordinate space"/>
> > + <arg name="dy" type="fixed" summary="delta y coordinate in surface coordinate space"/>
> > + </event>
> > +
> > + <event name="end">
> > + <description summary="multi-finger swipe end">
> > + This event is sent when a multi-finger swipe gesture ceases to
> > + be valid. This may happen when one or more finger is lifted or
> > + the gesture is cancelled.
> > +
> > + When a gesture is cancelled, the client should undo state changes
> > + caused by this gesture. What causes a gesture to be cancelled is
> > + implementation-dependent.
> > + </description>
> > + <arg name="serial" type="uint"/>
> > + <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
> > + <arg name="cancelled" type="int" summary="1 if the gesture was cancelled, 0 otherwise"/>
> > + </event>
> > + </interface>
> > +
> > + <interface name="_wl_pointer_gesture_pinch" version="1">
> > + <description summary="a pinch gesture object">
> > + A pinch gesture object notifies a client about a multi-finger pinch
> > + gesture detected on an indirect input device such as a touchpad.
> > + The gesture is usually initiated by multiple fingers moving towards
> > + each other or away from each other, or by two or more fingers rotating
> > + around a logical center of gravity. The precise conditions of when
> > + such a gesture is detected are implementation-dependent.
> > +
> > + A gesture consists of three stages: begin, update (optional) and end.
> > + There cannot be multiple simultaneous pinch or swipe gestures on a
> > + same pointer/seat, how compositors prevent these situations is
> > + implementation-dependent.
> > +
> > + A gesture may be cancelled by the compositor or the hardware.
> > + Clients should not consider performing permanent or irreversible
> > + actions until the end of a gesture has been received.
> > + </description>
> > +
> > + <request name="destroy" type="destructor">
> > + <description summary="destroy the pinch gesture object"/>
> > + </request>
> > +
> > + <event name="begin">
> > + <description summary="multi-finger pinch begin">
> > + This event is sent when a multi-finger pinch gesture is detected
> > + on the device.
> > + </description>
> > + <arg name="serial" type="uint"/>
> > + <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
> > + <arg name="surface" type="object" interface="wl_surface"/>
> > + <arg name="fingers" type="uint" summary="number of fingers"/>
> > + </event>
> > +
> > + <event name="update">
> > + <description summary="multi-finger pinch motion">
> > + This event is sent when a multi-finger pinch gesture changes the
> > + position of the logical center, the rotation or the relative scale.
> > +
> > + The dx and dy coordinates are relative coordinates in the
> > + surface coordinate space of the logical center of the gesture.
> > +
> > + The scale factor is an absolute scale compared to the
> > + pointer_gesture_pinch.begin event, e.g. a scale of 2 means the fingers
> > + are now twice as far apart as on pointer_gesture_pinch.begin.
> > +
> > + The rotation is the relative angle in degrees clockwise compared to the previous
> > + pointer_gesture_pinch.begin or pointer_gesture_pinch.update event.
> > + </description>
> > + <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
> > + <arg name="dx" type="fixed" summary="delta x coordinate in surface coordinate space"/>
> > + <arg name="dy" type="fixed" summary="delta y coordinate in surface coordinate space"/>
> > + <arg name="scale" type="fixed" summary="scale relative to the initial finger position"/>
> > + <arg name="rotation" type="fixed" summary="angle in degrees cw relative to the previous event"/>
> > + </event>
> > +
> > + <event name="end">
> > + <description summary="multi-finger pinch end">
> > + This event is sent when a multi-finger pinch gesture ceases to
> > + be valid. This may happen when one or more finger is lifted or
> > + the gesture is cancelled.
> > +
> > + When a gesture is cancelled, the client should undo state changes
> > + caused by this gesture. What causes a gesture to be cancelled is
> > + implementation-dependent.
> > + </description>
> > + <arg name="serial" type="uint"/>
> > + <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
> > + <arg name="cancelled" type="int" summary="1 if the gesture was cancelled, 0 otherwise"/>
> > + </event>
> > + </interface>
> > +</protocol>
> > --
> > 2.4.3
> >
> > _______________________________________________
> > wayland-devel mailing list
> > wayland-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list