[PATCH libinput] Fix normalization functions

Bill Spitzak spitzak at gmail.com
Wed Oct 8 15:56:48 PDT 2014


That certainly looks correct, but this code will return a value less 
than 1.0 when absinfo->value == absinfo->maximum. Is this correct? If it 
is supposed to be 1.0 then I would remove the +1 in the line that 
computes range.

On 10/08/2014 02:53 PM, Jason Gerecke wrote:
> We need to *subtract*, not *add* the minimum to determine the
> range-effective value. For example: if (min, current, max) is
> (100, 100, 1000) then the normalized value would be 0.0, not 0.2.
>
> Signed-off-by: Jason Gerecke <killertofu at gmail.com>
> ---
> This patch should be applied to the 'tablet-support' branch, obviously.
> ...Re-sending since I messed up the mailinglist address.
>
>   src/evdev-tablet.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/evdev-tablet.c b/src/evdev-tablet.c
> index a63b734..ff5f737 100644
> --- a/src/evdev-tablet.c
> +++ b/src/evdev-tablet.c
> @@ -106,7 +106,7 @@ tablet_update_tool(struct tablet_dispatch *tablet,
>   static inline double
>   normalize_pressure_or_dist(const struct input_absinfo * absinfo) {
>   	double range = absinfo->maximum - absinfo->minimum + 1;
> -	double value = (absinfo->value + absinfo->minimum) / range;
> +	double value = (absinfo->value - absinfo->minimum) / range;
>
>   	return value;
>   }
> @@ -114,7 +114,7 @@ normalize_pressure_or_dist(const struct input_absinfo * absinfo) {
>   static inline double
>   normalize_tilt(const struct input_absinfo * absinfo) {
>   	double range = absinfo->maximum - absinfo->minimum + 1;
> -	double value = (absinfo->value + absinfo->minimum) / range;
> +	double value = (absinfo->value - absinfo->minimum) / range;
>
>   	/* Map to the (-1, 1) range */
>   	return (value * 2) - 1;
>


More information about the wayland-devel mailing list