diff options
-rw-r--r-- | libs/input/MotionPredictor.cpp | 13 | ||||
-rw-r--r-- | libs/input/input_flags.aconfig | 7 |
2 files changed, 19 insertions, 1 deletions
diff --git a/libs/input/MotionPredictor.cpp b/libs/input/MotionPredictor.cpp index c4e3ff6dee..e836a4c92f 100644 --- a/libs/input/MotionPredictor.cpp +++ b/libs/input/MotionPredictor.cpp @@ -22,17 +22,21 @@ #include <cmath> #include <cstddef> #include <cstdint> +#include <limits> #include <string> #include <vector> #include <android-base/logging.h> #include <android-base/strings.h> #include <android/input.h> +#include <com_android_input_flags.h> #include <attestation/HmacKeyManager.h> #include <ftl/enum.h> #include <input/TfLiteMotionPredictor.h> +namespace input_flags = com::android::input::flags; + namespace android { namespace { @@ -197,7 +201,14 @@ std::unique_ptr<MotionEvent> MotionPredictor::predict(nsecs_t timestamp) { // device starts to speed up, but avoids producing noisy predictions as it slows down. break; } - // TODO(b/266747654): Stop predictions if confidence is < some threshold. + if (input_flags::enable_jerk_prediction_pruning()) { + // TODO(b/266747654): Stop predictions if confidence is < some threshold + // Arbitrarily high pruning index, will correct once jerk thresholding is implemented. + const size_t upperBoundPredictionIndex = std::numeric_limits<size_t>::max(); + if (i > upperBoundPredictionIndex) { + break; + } + } const TfLiteMotionPredictorSample::Point predictedPoint = convertPrediction(axisFrom, axisTo, predictedR[i], predictedPhi[i]); diff --git a/libs/input/input_flags.aconfig b/libs/input/input_flags.aconfig index b48b0fb924..c1f5e2a53b 100644 --- a/libs/input/input_flags.aconfig +++ b/libs/input/input_flags.aconfig @@ -128,3 +128,10 @@ flag { description: "Enable fling scrolling to be stopped by putting a finger on the touchpad again" bug: "281106755" } + +flag { + name: "enable_jerk_prediction_pruning" + namespace: "input" + description: "Enable prediction pruning based on jerk thresholds." + bug: "266747654" +} |