From: Peter Hutterer Date: Fri, 19 Sep 2014 05:09:31 +0000 (+1000) Subject: evdev: hook into pointer acceleration config interface X-Git-Tag: 0.7.0~107 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cd6b5770b2b89c3ee174390e733aadb06f8d09a3;p=platform%2Fupstream%2Flibinput.git evdev: hook into pointer acceleration config interface Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede --- diff --git a/src/evdev.c b/src/evdev.c index de7ee16c..a5a8372b 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -860,6 +860,39 @@ evdev_device_dispatch(void *data) } } +static int +evdev_accel_config_available(struct libinput_device *device) +{ + /* this function is only called if we set up ptraccel, so we can + reply with a resounding "Yes" */ + return 1; +} + +static enum libinput_config_status +evdev_accel_config_set_speed(struct libinput_device *device, double speed) +{ + struct evdev_device *dev = (struct evdev_device *)device; + + if (!filter_set_speed(dev->pointer.filter, speed)) + return LIBINPUT_CONFIG_STATUS_INVALID; + + return LIBINPUT_CONFIG_STATUS_SUCCESS; +} + +static double +evdev_accel_config_get_speed(struct libinput_device *device) +{ + struct evdev_device *dev = (struct evdev_device *)device; + + return filter_get_speed(dev->pointer.filter); +} + +static double +evdev_accel_config_get_default_speed(struct libinput_device *device) +{ + return 0.0; +} + static int configure_pointer_acceleration(struct evdev_device *device) { @@ -869,6 +902,12 @@ configure_pointer_acceleration(struct evdev_device *device) if (!device->pointer.filter) return -1; + device->pointer.config.available = evdev_accel_config_available; + device->pointer.config.set_speed = evdev_accel_config_set_speed; + device->pointer.config.get_speed = evdev_accel_config_get_speed; + device->pointer.config.get_default_speed = evdev_accel_config_get_default_speed; + device->base.config.accel = &device->pointer.config; + return 0; } diff --git a/src/evdev.h b/src/evdev.h index aecbd95a..6a1203fc 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -114,6 +114,7 @@ struct evdev_device { int suspended; struct { + struct libinput_device_config_accel config; struct motion_filter *filter; } pointer;