Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> --- src/filter-private.h | 3 +++ src/filter.c | 28 +++++++++++++++++++++++++++- src/filter.h | 7 +++++++ 3 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/src/filter-private.h b/src/filter-private.h index 283a747..dcce125 100644 --- a/src/filter-private.h +++ b/src/filter-private.h @@ -32,9 +32,12 @@ struct motion_filter_interface { struct motion_params *motion, void *data, uint64_t time); void (*destroy)(struct motion_filter *filter); + bool (*set_speed)(struct motion_filter *filter, + double speed); }; struct motion_filter { + double speed; /* normalized [-1, 1] */ struct motion_filter_interface *interface; }; diff --git a/src/filter.c b/src/filter.c index 5e627e1..327dbce 100644 --- a/src/filter.c +++ b/src/filter.c @@ -22,6 +22,7 @@ #include "config.h" +#include <assert.h> #include <stdio.h> #include <stdlib.h> #include <stdint.h> @@ -49,6 +50,19 @@ filter_destroy(struct motion_filter *filter) filter->interface->destroy(filter); } +bool +filter_set_speed(struct motion_filter *filter, + double speed) +{ + return filter->interface->set_speed(filter, speed); +} + +double +filter_get_speed(struct motion_filter *filter) +{ + return filter->speed; +} + /* * Default parameters for pointer acceleration profiles. */ @@ -237,9 +251,21 @@ accelerator_destroy(struct motion_filter *filter) free(accel); } +static bool +accelerator_set_speed(struct motion_filter *filter, + double speed) +{ + assert(speed >= -1.0 && speed <= 1.0); + + filter->speed = speed; + + return true; +} + struct motion_filter_interface accelerator_interface = { accelerator_filter, - accelerator_destroy + accelerator_destroy, + accelerator_set_speed, }; struct motion_filter * diff --git a/src/filter.h b/src/filter.h index b79f0e3..1f53e81 100644 --- a/src/filter.h +++ b/src/filter.h @@ -25,6 +25,7 @@ #include "config.h" +#include <stdbool.h> #include <stdint.h> struct motion_params { @@ -40,6 +41,12 @@ filter_dispatch(struct motion_filter *filter, void filter_destroy(struct motion_filter *filter); +bool +filter_set_speed(struct motion_filter *filter, + double speed); +double +filter_get_speed(struct motion_filter *filter); + typedef double (*accel_profile_func_t)(struct motion_filter *filter, void *data, double velocity, -- 1.9.3 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel