Fix ABS_MT_SLOT handling.
Shouldn't reset the current slot index to 0 after each SYN_REPORT.
Change-Id: I370e4770f8ae0ce598369ecbaf64772c13e02d46
diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp
index 25a2c78..d0a93ec 100644
--- a/services/input/InputReader.cpp
+++ b/services/input/InputReader.cpp
@@ -5303,7 +5303,8 @@
}
void MultiTouchInputMapper::clearState() {
- mAccumulator.clear(mSlotCount);
+ mAccumulator.clearSlots(mSlotCount);
+ mAccumulator.clearButtons();
mButtonState = 0;
}
@@ -5337,13 +5338,13 @@
}
if (mAccumulator.currentSlot < 0 || size_t(mAccumulator.currentSlot) >= mSlotCount) {
- if (newSlot) {
#if DEBUG_POINTERS
+ if (newSlot) {
LOGW("MultiTouch device %s emitted invalid slot index %d but it "
"should be between 0 and %d; ignoring this slot.",
getDeviceName().string(), mAccumulator.currentSlot, mSlotCount);
-#endif
}
+#endif
break;
}
@@ -5546,7 +5547,10 @@
syncTouch(when, havePointerIds);
- mAccumulator.clear(mUsingSlotsProtocol ? 0 : mSlotCount);
+ if (!mUsingSlotsProtocol) {
+ mAccumulator.clearSlots(mSlotCount);
+ }
+ mAccumulator.clearButtons();
}
void MultiTouchInputMapper::configureRawAxes() {