diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index a2b2de392..8cf3f62f0 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -1590,6 +1590,58 @@ xf86PostTouchEvent(DeviceIntPtr dev, uint32_t touchid, uint16_t type, QueueTouchEvents(dev, type, touchid, flags, mask); } +/** + * Post a gesture pinch event. The driver is responsible for maintaining the + * correct event sequence (GesturePinchBegin, GesturePinchUpdate, + * GesturePinchEnd). + * + * @param dev The device to post the event for + * @param type One of XI_GesturePinchBegin, XI_GesturePinchUpdate, + * XI_GesturePinchEnd + * @param num_touches The number of touches in the gesture + * @param flags Flags for this event + * @param delta_x,delta_y accelerated relative motion delta + * @param delta_unaccel_x,delta_unaccel_y unaccelerated relative motion delta + * @param scale absolute scale of a pinch gesture + * @param delta_angle the ange delta in degrees between the last and the current pinch event. + */ +void +xf86PostGesturePinchEvent(DeviceIntPtr dev, uint16_t type, + uint16_t num_touches, uint32_t flags, + double delta_x, double delta_y, + double delta_unaccel_x, + double delta_unaccel_y, + double scale, double delta_angle) +{ + QueueGesturePinchEvents(dev, type, num_touches, flags, delta_x, delta_y, + delta_unaccel_x, delta_unaccel_y, + scale, delta_angle); +} + +/** + * Post a gesture swipe event. The driver is responsible for maintaining the + * correct event sequence (GestureSwipeBegin, GestureSwipeUpdate, + * GestureSwipeEnd). + * + * @param dev The device to post the event for + * @param type One of XI_GestureSwipeBegin, XI_GestureSwipeUpdate, + * XI_GestureSwipeEnd + * @param num_touches The number of touches in the gesture + * @param flags Flags for this event + * @param delta_x,delta_y accelerated relative motion delta + * @param delta_unaccel_x,delta_unaccel_y unaccelerated relative motion delta + */ +void +xf86PostGestureSwipeEvent(DeviceIntPtr dev, uint16_t type, + uint16_t num_touches, uint32_t flags, + double delta_x, double delta_y, + double delta_unaccel_x, + double delta_unaccel_y) +{ + QueueGestureSwipeEvents(dev, type, num_touches, flags, delta_x, delta_y, + delta_unaccel_x, delta_unaccel_y); +} + void xf86InputEnableVTProbe(void) { diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h index 749a80d4b..e73aff269 100644 --- a/hw/xfree86/common/xf86Xinput.h +++ b/hw/xfree86/common/xf86Xinput.h @@ -158,6 +158,20 @@ extern _X_EXPORT void xf86PostKeyboardEvent(DeviceIntPtr device, extern _X_EXPORT void xf86PostTouchEvent(DeviceIntPtr dev, uint32_t touchid, uint16_t type, uint32_t flags, const ValuatorMask *mask); +extern _X_EXPORT void xf86PostGesturePinchEvent(DeviceIntPtr dev, uint16_t type, + uint16_t num_touches, + uint32_t flags, + double delta_x, double delta_y, + double delta_unaccel_x, + double delta_unaccel_y, + double scale, double delta_angle); +extern _X_EXPORT void xf86PostGestureSwipeEvent(DeviceIntPtr dev, uint16_t type, + uint16_t num_touches, + uint32_t flags, + double delta_x, double delta_y, + double delta_unaccel_x, + double delta_unaccel_y); + extern _X_EXPORT InputInfoPtr xf86FirstLocalDevice(void); extern _X_EXPORT int xf86ScaleAxis(int Cx, int to_max, int to_min, int from_max, int from_min);