Merge "Cache Device Motion Prediction Availability" into udc-dev

This commit is contained in:
TreeHugger Robot
2023-03-13 16:08:27 +00:00
committed by Android (Google) Code Review

View File

@@ -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);