HID: magicmouse: properly account for scroll movement in state
authorChase Douglas <chase.douglas@canonical.com>
Mon, 21 Jun 2010 01:32:29 +0000 (21:32 -0400)
committerJiri Kosina <jkosina@suse.cz>
Thu, 24 Jun 2010 08:48:03 +0000 (10:48 +0200)
Before this change, sequential scroll events would take a variable
amount of movement due to incorrect accounting. This change ensures all
scroll movements require a deterministic touch movement for an action to
occur.

Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Acked-by: Michael Poole <mdpoole@troilus.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-magicmouse.c

index 4c4a79c..f44aaf2 100644 (file)
@@ -189,7 +189,8 @@ static void magicmouse_emit_touch(struct magicmouse_sc *msc, int raw_id, u8 *tda
                case TOUCH_STATE_DRAG:
                        step = step / accel_profile[msc->scroll_accel];
                        if (step != 0) {
-                               msc->touches[id].scroll_y = y;
+                               msc->touches[id].scroll_y -=
+                                       step * accel_profile[msc->scroll_accel];
                                msc->scroll_jiffies = now;
                                input_report_rel(input, REL_WHEEL, step);
                        }