From f58a2b9cd982a6a761deaa05b3d3e9802df040c3 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Thu, 30 Jul 2020 14:40:29 -0700 Subject: [PATCH] Fixing wrong velocity state when there are too few samples Bug: 160568387 Change-Id: I32b3b7ee1bff5595941fc0c0b37c9f5a28d1a1fa (cherry picked from commit 48afb6b3b9f5a4d67e36a7c6cc994efeb8b9be38) --- .../quickstep/util/MotionPauseDetector.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/quickstep/src/com/android/quickstep/util/MotionPauseDetector.java b/quickstep/src/com/android/quickstep/util/MotionPauseDetector.java index a5d456878a..969fa5067d 100644 --- a/quickstep/src/com/android/quickstep/util/MotionPauseDetector.java +++ b/quickstep/src/com/android/quickstep/util/MotionPauseDetector.java @@ -358,18 +358,23 @@ public class MotionPauseDetector { if (count < 3) { // Too few samples - if (count == 2) { - int endPos = pointPos - 1; - if (endPos < 0) { - endPos += HISTORY_SIZE; - } - float denominator = eventTime - mHistoricTimes[endPos]; - if (denominator != 0) { - return (eventTime - mHistoricPos[endPos]) / denominator; - + switch (count) { + case 2: { + int endPos = pointPos - 1; + if (endPos < 0) { + endPos += HISTORY_SIZE; + } + float denominator = eventTime - mHistoricTimes[endPos]; + if (denominator != 0) { + return (mHistoricPos[pointPos] - mHistoricPos[endPos]) / denominator; + } } + // fall through + case 1: + return 0f; + default: + return null; } - return null; } float Sxx = sxi2 - sxi * sxi / count;