Input: alps - process_bitmap: fix counting of high point bits
authorHans de Goede <hdegoede@redhat.com>
Sat, 26 Jul 2014 05:41:51 +0000 (22:41 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 26 Jul 2014 21:03:15 +0000 (14:03 -0700)
alps_process_bitmap was resetting the point bit-count as soon as it saw
2 0 bits in a row. This means that unless the high point actually is at
the end of the bitmap, it would always get its num_bits set to 0.

Instead reset num_bits to 0 on a 0->1 transition, so that with > 2 fingers
we only count the number of bits occupied by the highest finger.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/mouse/alps.c

index c6af590a07d3b1074966214b26f3a9614efb1320..5b35f4fc4d2f7915154c762be209a6f968e75a76 100644 (file)
@@ -342,14 +342,13 @@ static void alps_get_bitmap_points(unsigned int map,
                if (bit) {
                        if (!prev_bit) {
                                point->start_bit = i;
+                               point->num_bits = 0;
                                (*fingers)++;
                        }
                        point->num_bits++;
                } else {
                        if (prev_bit)
                                point = high;
-                       else
-                               point->num_bits = 0;
                }
                prev_bit = bit;
        }