summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yeabkal Wubshit <yeabkal@google.com> 2023-03-10 05:15:45 +0000
committer Cherrypicker Worker <android-build-cherrypicker-worker@google.com> 2023-03-13 14:21:10 +0000
commit8682c7c4ce959cd85c49934dba4b7dba158aa495 (patch)
tree356c0ac9fc526ad3c870af0538046f5261a28ff6
parent883585c473d5b2192754bc29a60b8e89f32e7862 (diff)
Cache Device Motion Prediction Availability
This saves the time needed for multiple method calls to get Resources and a resource value each time a prediction API is called. Change-Id: Id7b2610a0a4bafc6bced69aeedb25ca1148755ea (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:4aa74158a6493f9c22d377fff1f9478a0f5a2f97) Merged-In: Id7b2610a0a4bafc6bced69aeedb25ca1148755ea
-rw-r--r--core/java/android/view/MotionPredictor.java23
1 files changed, 8 insertions, 15 deletions
diff --git a/core/java/android/view/MotionPredictor.java b/core/java/android/view/MotionPredictor.java
index 7d452f954fb0..27af3000fc8b 100644
--- a/core/java/android/view/MotionPredictor.java
+++ b/core/java/android/view/MotionPredictor.java
@@ -49,15 +49,17 @@ public final class MotionPredictor {
// Pointer to the native object.
private final long mPtr;
- private final Context mContext;
+ // Device-specific override to enable/disable motion prediction.
+ private final boolean mIsPredictionEnabled;
/**
* Create a new MotionPredictor for the provided {@link Context}.
* @param context The context for the predictions
*/
public MotionPredictor(@NonNull Context context) {
- mContext = context;
- final int offsetNanos = mContext.getResources().getInteger(
+ mIsPredictionEnabled = context.getResources().getBoolean(
+ com.android.internal.R.bool.config_enableMotionPrediction);
+ final int offsetNanos = context.getResources().getInteger(
com.android.internal.R.integer.config_motionPredictionOffsetNanos);
mPtr = nativeInitialize(offsetNanos);
RegistryHolder.REGISTRY.registerNativeAllocation(this, mPtr);
@@ -73,7 +75,7 @@ public final class MotionPredictor {
* @throws IllegalArgumentException if an inconsistent MotionEvent stream is sent.
*/
public void record(@NonNull MotionEvent event) {
- if (!isPredictionEnabled()) {
+ if (!mIsPredictionEnabled) {
return;
}
nativeRecord(mPtr, event);
@@ -94,21 +96,12 @@ public final class MotionPredictor {
*/
@Nullable
public MotionEvent predict(long predictionTimeNanos) {
- if (!isPredictionEnabled()) {
+ if (!mIsPredictionEnabled) {
return null;
}
return nativePredict(mPtr, predictionTimeNanos);
}
- private boolean isPredictionEnabled() {
- // Device-specific override
- if (!mContext.getResources().getBoolean(
- com.android.internal.R.bool.config_enableMotionPrediction)) {
- return false;
- }
- return true;
- }
-
/**
* Check whether a device supports motion predictions for a given source type.
*
@@ -120,7 +113,7 @@ public final class MotionPredictor {
* @see MotionEvent#getSource
*/
public boolean isPredictionAvailable(int deviceId, int source) {
- return isPredictionEnabled() && nativeIsPredictionAvailable(mPtr, deviceId, source);
+ return mIsPredictionEnabled && nativeIsPredictionAvailable(mPtr, deviceId, source);
}
private static native long nativeInitialize(int offsetNanos);