Merge "Propagate isResampled into MotionEvent.PointerCoords."
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index 1ff7ae6..5bc9847 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -4234,6 +4234,13 @@
public float relativeY;
/**
+ * Whether these coordinate data were generated by resampling.
+ *
+ * @hide
+ */
+ public boolean isResampled;
+
+ /**
* Clears the contents of this object.
* Resets all axes to zero.
*/
@@ -4251,6 +4258,7 @@
orientation = 0;
relativeX = 0;
relativeY = 0;
+ isResampled = false;
}
/**
@@ -4283,6 +4291,7 @@
orientation = other.orientation;
relativeX = other.relativeX;
relativeY = other.relativeY;
+ isResampled = other.isResampled;
}
/**
diff --git a/core/jni/android_view_MotionEvent.cpp b/core/jni/android_view_MotionEvent.cpp
index 403c583..bc0f9fb 100644
--- a/core/jni/android_view_MotionEvent.cpp
+++ b/core/jni/android_view_MotionEvent.cpp
@@ -59,6 +59,7 @@
jfieldID orientation;
jfieldID relativeX;
jfieldID relativeY;
+ jfieldID isResampled;
} gPointerCoordsClassInfo;
static struct {
@@ -223,6 +224,8 @@
outRawPointerCoords->setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_Y,
env->GetFloatField(pointerCoordsObj,
gPointerCoordsClassInfo.relativeY));
+ outRawPointerCoords->isResampled =
+ env->GetBooleanField(pointerCoordsObj, gPointerCoordsClassInfo.isResampled);
BitSet64 bits =
BitSet64(env->GetLongField(pointerCoordsObj, gPointerCoordsClassInfo.mPackedAxisBits));
@@ -440,6 +443,11 @@
bits.clearBit(axis);
}
pointerCoordsFromNative(env, rawPointerCoords, bits, outPointerCoordsObj);
+
+ const bool isResampled = historyPos == HISTORY_CURRENT
+ ? event->isResampled(pointerIndex, event->getHistorySize())
+ : event->isResampled(pointerIndex, historyPos);
+ env->SetBooleanField(outPointerCoordsObj, gPointerCoordsClassInfo.isResampled, isResampled);
}
static void android_view_MotionEvent_nativeGetPointerProperties(JNIEnv* env, jclass clazz,
@@ -881,6 +889,7 @@
gPointerCoordsClassInfo.orientation = GetFieldIDOrDie(env, clazz, "orientation", "F");
gPointerCoordsClassInfo.relativeX = GetFieldIDOrDie(env, clazz, "relativeX", "F");
gPointerCoordsClassInfo.relativeY = GetFieldIDOrDie(env, clazz, "relativeY", "F");
+ gPointerCoordsClassInfo.isResampled = GetFieldIDOrDie(env, clazz, "isResampled", "Z");
clazz = FindClassOrDie(env, "android/view/MotionEvent$PointerProperties");