diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp index 80e754756ab27..2035a4b56ff37 100644 --- a/services/input/InputReader.cpp +++ b/services/input/InputReader.cpp @@ -1335,7 +1335,7 @@ void MultiTouchMotionAccumulator::configure(size_t slotCount, bool usingSlotsPro void MultiTouchMotionAccumulator::clearSlots(int32_t initialSlot) { for (size_t i = 0; i < mSlotCount; i++) { - mSlots[i].clearIfInUse(); + mSlots[i].clear(); } mCurrentSlot = initialSlot; } @@ -1396,7 +1396,9 @@ void MultiTouchMotionAccumulator::process(const RawEvent* rawEvent) { break; case ABS_MT_TRACKING_ID: if (mUsingSlotsProtocol && rawEvent->value < 0) { - slot->clearIfInUse(); + // The slot is no longer in use but it retains its previous contents, + // which may be reused for subsequent touches. + slot->mInUse = false; } else { slot->mInUse = true; slot->mAbsMTTrackingId = rawEvent->value; @@ -1430,12 +1432,6 @@ MultiTouchMotionAccumulator::Slot::Slot() { clear(); } -void MultiTouchMotionAccumulator::Slot::clearIfInUse() { - if (mInUse) { - clear(); - } -} - void MultiTouchMotionAccumulator::Slot::clear() { mInUse = false; mHaveAbsMTTouchMinor = false; diff --git a/services/input/InputReader.h b/services/input/InputReader.h index de75cad70acdb..72802fc7fab76 100644 --- a/services/input/InputReader.h +++ b/services/input/InputReader.h @@ -696,7 +696,6 @@ public: int32_t mAbsMTToolType; Slot(); - void clearIfInUse(); void clear(); };