From ddc6962d775345ccb0eb4590486693efb3564075 Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Mon, 25 Jan 2016 16:20:18 -0600 Subject: ecore_drm: Add pointer warping API Adds a new API: ecore_drm_device_pointer_warp() which warps the pointer to the specified location. All libinput seats with pointers are warped. --- src/lib/ecore_drm/ecore_drm_device.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/lib/ecore_drm/ecore_drm_device.c') diff --git a/src/lib/ecore_drm/ecore_drm_device.c b/src/lib/ecore_drm/ecore_drm_device.c index 16a7843cd6..95117d2b9d 100644 --- a/src/lib/ecore_drm/ecore_drm_device.c +++ b/src/lib/ecore_drm/ecore_drm_device.c @@ -509,6 +509,30 @@ ecore_drm_device_pointer_xy_get(Ecore_Drm_Device *dev, int *x, int *y) } } +EAPI void +ecore_drm_device_pointer_warp(Ecore_Drm_Device *dev, int x, int y) +{ + Ecore_Drm_Seat *seat; + Ecore_Drm_Evdev *edev; + Eina_List *l, *ll; + + /* check for valid device */ + EINA_SAFETY_ON_TRUE_RETURN((!dev) || (dev->drm.fd < 0)); + EINA_LIST_FOREACH(dev->seats, l, seat) + { + EINA_LIST_FOREACH(seat->devices, ll, edev) + { + if (!libinput_device_has_capability(edev->device, + LIBINPUT_DEVICE_CAP_POINTER)) + continue; + + seat->ptr.dx = seat->ptr.ix = x; + seat->ptr.dy = seat->ptr.iy = y; + _ecore_drm_pointer_motion_post(edev); + } + } +} + EAPI Eina_Bool ecore_drm_device_software_setup(Ecore_Drm_Device *dev) { -- cgit v1.2.1