evdev-touchpad: Twiddle finger_state correctly

The original code always set the finger_state to the appropriate bitmask
irrespective of whether the event was a press or a release. It would also blat
all members of the bitmask rather than ORing in the new bit for the event.

Cc:Jonas Ådahl <jadahl@gmail.com>
Signed-off-by: Rob Bradford <rob@linux.intel.com>
This commit is contained in:
Rob Bradford 2012-10-09 18:44:29 +01:00 committed by Kristian Høgsberg
parent f77beeb981
commit 3de191e6b0

View File

@ -457,19 +457,19 @@ process_key(struct touchpad_dispatch *touchpad,
touchpad->reset = 1;
break;
case BTN_TOOL_FINGER:
touchpad->finger_state =
~TOUCHPAD_FINGERS_ONE | e->value ?
TOUCHPAD_FINGERS_ONE : 0;
touchpad->finger_state &= ~TOUCHPAD_FINGERS_ONE;
if (e->value)
touchpad->finger_state |= TOUCHPAD_FINGERS_ONE;
break;
case BTN_TOOL_DOUBLETAP:
touchpad->finger_state =
~TOUCHPAD_FINGERS_TWO | e->value ?
TOUCHPAD_FINGERS_TWO : 0;
touchpad->finger_state &= ~TOUCHPAD_FINGERS_TWO;
if (e->value)
touchpad->finger_state |= TOUCHPAD_FINGERS_TWO;
break;
case BTN_TOOL_TRIPLETAP:
touchpad->finger_state =
~TOUCHPAD_FINGERS_THREE | e->value ?
TOUCHPAD_FINGERS_THREE : 0;
touchpad->finger_state &= ~TOUCHPAD_FINGERS_THREE;
if (e->value)
touchpad->finger_state |= TOUCHPAD_FINGERS_THREE;
break;
}
}