summaryrefslogtreecommitdiff
path: root/src/filter.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2015-07-28 15:49:22 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2015-08-11 09:19:55 +1000
commitef3f234345a459cda1dd24ce43d6034038e8e4a3 (patch)
treecd03355d3427510c2a859231efe3106d380fce6e /src/filter.c
parentf2663e2b255e71aac6045c7a6bd3f7679fb16078 (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.c34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/filter.c b/src/filter.c
index f3e0fb32..369d7370 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;