summaryrefslogtreecommitdiff
path: root/src/filter.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2015-04-30 15:23:34 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2015-06-02 09:03:07 +1000
commit578c4e81c2606abb969972186b013f67fb152040 (patch)
tree8e7dc5b0666e412cd5fc1316d1ada0603aad074a /src/filter.c
parentaaa7622933ba41c61b7f265679e355ade5dc9fe9 (diff)
filter: pass last_velocity as argument
Let the caller set the various fields, here we just calculate stuff. No functional changes. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'src/filter.c')
-rw-r--r--src/filter.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/filter.c b/src/filter.c
index 0cdcb63e..fe862155 100644
--- a/src/filter.c
+++ b/src/filter.c
@@ -197,17 +197,20 @@ acceleration_profile(struct pointer_accelerator *accel,
static double
calculate_acceleration(struct pointer_accelerator *accel,
- void *data, double velocity, uint64_t time)
+ void *data,
+ double velocity,
+ double last_velocity,
+ uint64_t time)
{
double factor;
/* Use Simpson's rule to calculate the avarage acceleration between
* the previous motion and the most recent. */
factor = acceleration_profile(accel, data, velocity, time);
- factor += acceleration_profile(accel, data, accel->last_velocity, time);
+ factor += acceleration_profile(accel, data, last_velocity, time);
factor += 4.0 *
acceleration_profile(accel, data,
- (accel->last_velocity + velocity) / 2,
+ (last_velocity + velocity) / 2,
time);
factor = factor / 6.0;
@@ -228,7 +231,11 @@ accelerator_filter(struct motion_filter *filter,
feed_trackers(accel, unaccelerated, time);
velocity = calculate_velocity(accel, time);
- accel_value = calculate_acceleration(accel, data, velocity, time);
+ accel_value = calculate_acceleration(accel,
+ data,
+ velocity,
+ accel->last_velocity,
+ time);
accelerated.x = accel_value * unaccelerated->x;
accelerated.y = accel_value * unaccelerated->y;