[PATCH libinput] Fix normalization functions

Jason Gerecke killertofu at gmail.com
Wed Oct 8 14:53:21 PDT 2014


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;
-- 
2.1.2



More information about the wayland-devel mailing list