[PATCH libinput] Fix normalization functions

Peter Hutterer peter.hutterer at who-t.net
Fri Oct 10 00:55:25 PDT 2014


On Thu, Oct 09, 2014 at 10:28:54AM +0200, Hans de Goede wrote:
> Hi,
> 
> On 10/09/2014 12:56 AM, Bill Spitzak wrote:
> > 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.
> 
> Right, we need to drop the +1, Peter ?

yeah, correct. the +1 is from the other scale functions which scale to
pixels (where the max is exclusive), obviously doesn't apply here where the
max is inclusive. Bill, can you send me a patch for this please, thanks.

Cheers,
   Peter

> > 
> > 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;
> >>
> > _______________________________________________
> > wayland-devel mailing list
> > wayland-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> 


More information about the wayland-devel mailing list