diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2015-07-28 15:49:22 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2015-08-11 09:19:55 +1000 |
commit | ef3f234345a459cda1dd24ce43d6034038e8e4a3 (patch) | |
tree | cd03355d3427510c2a859231efe3106d380fce6e /src/filter.c | |
parent | f2663e2b255e71aac6045c7a6bd3f7679fb16078 (diff) |
filter: split out handling of the low-dpi accel method
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ã…dahl <jadahl@gmail.com>
Diffstat (limited to 'src/filter.c')
-rw-r--r-- | src/filter.c | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/src/filter.c b/src/filter.c index f3e0fb3..369d737 100644 --- a/src/filter.c +++ b/src/filter.c @@ -296,6 +296,27 @@ accelerator_filter(struct motion_filter *filter, (struct pointer_accelerator *) filter; double accel_value; /* unitless factor */ struct normalized_coords accelerated; + + accel_value = calculate_acceleration_factor(accel, + unaccelerated, + data, + time); + + accelerated.x = accel_value * unaccelerated->x; + accelerated.y = accel_value * unaccelerated->y; + + return accelerated; +} + +static struct normalized_coords +accelerator_filter_low_dpi(struct motion_filter *filter, + const struct normalized_coords *unaccelerated, + void *data, uint64_t time) +{ + struct pointer_accelerator *accel = + (struct pointer_accelerator *) filter; + double accel_value; /* unitless factor */ + struct normalized_coords accelerated; struct normalized_coords unnormalized; double dpi_factor = accel->dpi_factor; @@ -573,8 +594,6 @@ create_default_filter(int dpi) if (filter == NULL) return NULL; - filter->base.interface = &accelerator_interface; - filter->last_velocity = 0.0; filter->trackers = @@ -599,11 +618,19 @@ create_pointer_accelerator_filter_linear(int dpi) if (!filter) return NULL; + filter->base.interface = &accelerator_interface; filter->profile = pointer_accel_profile_linear; return &filter->base; } +struct motion_filter_interface accelerator_interface_low_dpi = { + accelerator_filter_low_dpi, + accelerator_restart, + accelerator_destroy, + accelerator_set_speed, +}; + struct motion_filter * create_pointer_accelerator_filter_linear_low_dpi(int dpi) { @@ -613,6 +640,7 @@ create_pointer_accelerator_filter_linear_low_dpi(int dpi) if (!filter) return NULL; + filter->base.interface = &accelerator_interface_low_dpi; filter->profile = pointer_accel_profile_linear_low_dpi; return &filter->base; @@ -627,6 +655,7 @@ create_pointer_accelerator_filter_touchpad(int dpi) if (!filter) return NULL; + filter->base.interface = &accelerator_interface; filter->profile = touchpad_accel_profile_linear; return &filter->base; @@ -641,6 +670,7 @@ create_pointer_accelerator_filter_lenovo_x230(int dpi) if (!filter) return NULL; + filter->base.interface = &accelerator_interface; filter->profile = touchpad_lenovo_x230_accel_profile; return &filter->base; |