On Fri, Jul 31, 2015 at 02:37:52PM +0800, Jonas Ådahl wrote: > On Fri, Jul 31, 2015 at 04:19:03PM +1000, Peter Hutterer wrote: > > There is no need here to use µs since we're just handling speeds/thresholds, > > not actual events where a ms granularity can be too high. > > > > Moving back to ms lets us drop a bunch of zeroes that clutter up the code, > > and > > since the acceleration functions are a bit magic anyway, having the various > > 1000.0 factors in there makes it even less obvious. > > > > Signed-off-by: Peter Hutterer <[email protected]> > > --- > > src/filter.c | 38 +++++++++++++++++++------------------- > > tools/ptraccel-debug.c | 4 ++-- > > 2 files changed, 21 insertions(+), 21 deletions(-) > > > > diff --git a/src/filter.c b/src/filter.c > > index 54ae397..f5a3748 100644 > > --- a/src/filter.c > > +++ b/src/filter.c > > @@ -77,7 +77,7 @@ filter_get_speed(struct motion_filter *filter) > > * Default parameters for pointer acceleration profiles. > > */ > > > > -#define DEFAULT_THRESHOLD 0.0004 /* in units/us */ > > +#define DEFAULT_THRESHOLD 0.4 /* in units/ms */ > > #define DEFAULT_ACCELERATION 2.0 /* unitless factor */ > > #define DEFAULT_INCLINE 1.1 /* unitless factor */ > > > > @@ -220,7 +220,7 @@ calculate_velocity(struct pointer_accelerator *accel, > > uint64_t time) > > } > > } > > > > - return result; /* units/us */ > > + return result * 1000; /* units/ms */ > > Did you consider changing velocity back to units/ms everywhere, i.e. > calculate_tracker_velocity? Doing it here would mean "velocity" means > different depending on where in the code it is.
yeah, good point, I'll fix that up. > Also, I wonder how I could have missed 2/3. Sorry about that. np, I didnt' see it either until I modified it for other reasons. we should have a test for that but... > With the above comment in mind, these three are still Reviewed-by: Jonas > Ådahl <[email protected]> thanks for the reviews. Cheers, Peter > > } > > > > static double > > @@ -256,11 +256,11 @@ calculate_acceleration(struct pointer_accelerator > > *accel, > > static struct normalized_coords > > accelerator_filter(struct motion_filter *filter, > > const struct normalized_coords *unaccelerated, > > - void *data, uint64_t time) > > + void *data, uint64_t time /* in us */) > > { > > struct pointer_accelerator *accel = > > (struct pointer_accelerator *) filter; > > - double velocity; /* units/us */ > > + double velocity; /* units/ms */ > > double accel_value; /* unitless factor */ > > struct normalized_coords accelerated; > > struct normalized_coords unnormalized; > > @@ -397,23 +397,23 @@ > > create_pointer_accelerator_filter(accel_profile_func_t profile, > > double > > pointer_accel_profile_linear_low_dpi(struct motion_filter *filter, > > void *data, > > - double speed_in, /* in device units > > (units/us) */ > > - uint64_t time) > > + double speed_in, /* in device units > > (units/ms) */ > > + uint64_t time /* in us */) > > { > > struct pointer_accelerator *accel_filter = > > (struct pointer_accelerator *)filter; > > > > double s1, s2; > > double max_accel = accel_filter->accel; /* unitless factor */ > > - const double threshold = accel_filter->threshold; /* units/us */ > > + const double threshold = accel_filter->threshold; /* units/ms */ > > const double incline = accel_filter->incline; > > double factor; > > double dpi_factor = accel_filter->dpi_factor; > > > > max_accel /= dpi_factor; > > > > - s1 = min(1, 0.3 + speed_in * 10000.0); > > - s2 = 1 + (speed_in * 1000.0 - threshold * dpi_factor * 1000.0) * > > incline; > > + s1 = min(1, 0.3 + speed_in * 10.0); > > + s2 = 1 + (speed_in - threshold * dpi_factor) * incline; > > > > factor = min(max_accel, s2 > 1 ? s2 : s1); > > > > @@ -424,19 +424,19 @@ double > > pointer_accel_profile_linear(struct motion_filter *filter, > > void *data, > > double speed_in, /* 1000-dpi normalized */ > > - uint64_t time) > > + uint64_t time /* in us */) > > { > > struct pointer_accelerator *accel_filter = > > (struct pointer_accelerator *)filter; > > > > double s1, s2; > > const double max_accel = accel_filter->accel; /* unitless factor */ > > - const double threshold = accel_filter->threshold; /* units/us */ > > + const double threshold = accel_filter->threshold; /* units/ms */ > > const double incline = accel_filter->incline; > > double factor; > > > > - s1 = min(1, 0.3 + speed_in * 10 * 1000.0); > > - s2 = 1 + (speed_in * 1000.0 - threshold * 1000.0) * incline; > > + s1 = min(1, 0.3 + speed_in * 10); > > + s2 = 1 + (speed_in - threshold) * incline; > > > > factor = min(max_accel, s2 > 1 ? s2 : s1); > > > > @@ -446,8 +446,8 @@ pointer_accel_profile_linear(struct motion_filter > > *filter, > > double > > touchpad_accel_profile_linear(struct motion_filter *filter, > > void *data, > > - double speed_in, > > - uint64_t time) > > + double speed_in, > > + uint64_t time /* in us */) > > { > > /* Once normalized, touchpads see the same > > acceleration as mice. that is technically correct but > > @@ -468,7 +468,7 @@ double > > touchpad_lenovo_x230_accel_profile(struct motion_filter *filter, > > void *data, > > double speed_in, > > - uint64_t time) > > + uint64_t time /* in us */) > > { > > /* Keep the magic factor from touchpad_accel_profile_linear. */ > > const double TP_MAGIC_SLOWDOWN = 0.4; > > @@ -488,13 +488,13 @@ touchpad_lenovo_x230_accel_profile(struct > > motion_filter *filter, > > const double max_accel = accel_filter->accel * > > TP_MAGIC_LOW_RES_FACTOR; /* unitless factor */ > > const double threshold = accel_filter->threshold / > > - TP_MAGIC_LOW_RES_FACTOR; /* units/us */ > > + TP_MAGIC_LOW_RES_FACTOR; /* units/ms */ > > const double incline = accel_filter->incline * TP_MAGIC_LOW_RES_FACTOR; > > > > speed_in *= TP_MAGIC_SLOWDOWN / TP_MAGIC_LOW_RES_FACTOR; > > > > - s1 = min(1, speed_in * 5 * 1000.0); > > - s2 = 1 + (speed_in * 1000.0 - threshold * 1000.0) * incline; > > + s1 = min(1, speed_in * 5); > > + s2 = 1 + (speed_in - threshold) * incline; > > > > speed_out = min(max_accel, s2 > 1 ? s2 : s1); > > > > diff --git a/tools/ptraccel-debug.c b/tools/ptraccel-debug.c > > index b0867db..1496763 100644 > > --- a/tools/ptraccel-debug.c > > +++ b/tools/ptraccel-debug.c > > @@ -147,12 +147,12 @@ print_accel_func(struct motion_filter *filter) > > printf("# set ylabel \"raw accel factor\"\n"); > > printf("# set style data lines\n"); > > printf("# plot \"gnuplot.data\" using 1:2\n"); > > - for (vel = 0.0; vel < 0.003; vel += 0.0000001) { > > + for (vel = 0.0; vel < 3.0; vel += .0001) { > > double result = pointer_accel_profile_linear(filter, > > NULL, > > vel, > > 0 /* time */); > > - printf("%.8f\t%.4f\n", vel, result); > > + printf("%.4f\t%.4f\n", vel, result); > > } > > } > > > > -- > > 2.4.3 > > > > _______________________________________________ > > wayland-devel mailing list > > [email protected] > > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
