DO NOT MERGE - Merge RP1A.201005.006 am: 05a4c9e19a

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/1449166

Change-Id: I54d4f1ced0cc63b31b1d7a9b859c057f56bd5db2
This commit is contained in:
The Android Open Source Project
2020-10-06 20:23:55 +00:00
committed by Automerger Merge Worker

View File

@@ -276,7 +276,7 @@ public class MotionPauseDetector {
private static final int HISTORY_SIZE = 20;
// Position history are stored in a circular array
private final float[] mHistoricTimes = new float[HISTORY_SIZE];
private final long[] mHistoricTimes = new long[HISTORY_SIZE];
private final float[] mHistoricPos = new float[HISTORY_SIZE];
private int mHistoryCount = 0;
private int mHistoryStart = 0;
@@ -292,7 +292,7 @@ public class MotionPauseDetector {
mHistoryCount = mHistoryStart = 0;
}
private void addPositionAndTime(float eventTime, float eventPosition) {
private void addPositionAndTime(long eventTime, float eventPosition) {
mHistoricTimes[mHistoryStart] = eventTime;
mHistoricPos[mHistoryStart] = eventPosition;
mHistoryStart++;
@@ -322,7 +322,7 @@ public class MotionPauseDetector {
* Based on solveUnweightedLeastSquaresDeg2 in VelocityTracker.cpp
*/
private Float solveUnweightedLeastSquaresDeg2(final int pointPos) {
final float eventTime = mHistoricTimes[pointPos];
final long eventTime = mHistoricTimes[pointPos];
float sxi = 0, sxiyi = 0, syi = 0, sxi2 = 0, sxi3 = 0, sxi2yi = 0, sxi4 = 0;
int count = 0;
@@ -332,8 +332,8 @@ public class MotionPauseDetector {
index += HISTORY_SIZE;
}
float time = mHistoricTimes[index];
float age = eventTime - time;
long time = mHistoricTimes[index];
long age = eventTime - time;
if (age > HORIZON_MS) {
break;
}
@@ -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;
}
long 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;