diff options
author | 2023-07-21 19:11:52 -0700 | |
---|---|---|
committer | 2023-07-24 08:38:17 -0700 | |
commit | d9c4008a731999a141faa518b42fc3385c5540f6 (patch) | |
tree | f11be5a91180328e2d06bc701b41ddd23c1ca78e | |
parent | 6d8c1c79f3f0444d825ab178b74d98999c41f3cd (diff) |
Improve VelocityTracker bad pointer ID crash log
This helps developers better understand the crash cause when
crashes are caused by bad pointer IDs given to VelocityTracker
Bug: 292300437
Test: atest libinput_tests
Change-Id: I3108f5b378ed2d9e92102cc7b38045058e02ec1f
-rw-r--r-- | libs/input/VelocityTracker.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libs/input/VelocityTracker.cpp b/libs/input/VelocityTracker.cpp index 87c7768f25..8704eee73d 100644 --- a/libs/input/VelocityTracker.cpp +++ b/libs/input/VelocityTracker.cpp @@ -16,10 +16,11 @@ #define LOG_TAG "VelocityTracker" -#include <array> +#include <android-base/logging.h> #include <inttypes.h> #include <limits.h> #include <math.h> +#include <array> #include <optional> #include <input/PrintTools.h> @@ -243,6 +244,11 @@ void VelocityTracker::clearPointer(int32_t pointerId) { void VelocityTracker::addMovement(nsecs_t eventTime, int32_t pointerId, int32_t axis, float position) { + if (pointerId < 0 || pointerId > MAX_POINTER_ID) { + LOG(FATAL) << "Invalid pointer ID " << pointerId << " for axis " + << MotionEvent::getLabel(axis); + } + if (mCurrentPointerIdBits.hasBit(pointerId) && std::chrono::nanoseconds(eventTime - mLastEventTime) > ASSUME_POINTER_STOPPED_TIME) { ALOGD_IF(DEBUG_VELOCITY, "VelocityTracker: stopped for %s, clearing state.", |