aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src
diff options
context:
space:
mode:
Diffstat (limited to 'native/jni/src')
-rw-r--r--native/jni/src/defines.h1
-rw-r--r--native/jni/src/proximity_info_state.cpp32
-rw-r--r--native/jni/src/proximity_info_state.h2
3 files changed, 23 insertions, 12 deletions
diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h
index a6dd2fd84..3d7ba4f36 100644
--- a/native/jni/src/defines.h
+++ b/native/jni/src/defines.h
@@ -376,6 +376,7 @@ static inline void prof_out(void) {
#define MIN_USER_TYPED_LENGTH_FOR_EXCESSIVE_CHARACTER_SUGGESTION 3
// TODO: Remove
+#define MAX_POINTER_COUNT 1
#define MAX_POINTER_COUNT_FOR_G 2
// Size, in bytes, of the bloom filter index for bigrams
diff --git a/native/jni/src/proximity_info_state.cpp b/native/jni/src/proximity_info_state.cpp
index 39d53fb52..31938a20c 100644
--- a/native/jni/src/proximity_info_state.cpp
+++ b/native/jni/src/proximity_info_state.cpp
@@ -39,12 +39,8 @@ void ProximityInfoState::initInputParams(const int pointerId, const float maxPoi
const ProximityInfo *proximityInfo, const int *const inputCodes, const int inputSize,
const int *const xCoordinates, const int *const yCoordinates, const int *const times,
const int *const pointerIds, const bool isGeometric) {
- if (isGeometric) {
- mIsContinuationPossible = checkAndReturnIsContinuationPossible(
- inputSize, xCoordinates, yCoordinates, times);
- } else {
- mIsContinuationPossible = false;
- }
+ mIsContinuationPossible = checkAndReturnIsContinuationPossible(
+ inputSize, xCoordinates, yCoordinates, times, isGeometric);
mProximityInfo = proximityInfo;
mHasTouchPositionCorrectionData = proximityInfo->hasTouchPositionCorrectionData();
@@ -466,13 +462,27 @@ float ProximityInfoState::calculateBeelineSpeedRate(
}
bool ProximityInfoState::checkAndReturnIsContinuationPossible(const int inputSize,
- const int *const xCoordinates, const int *const yCoordinates, const int *const times) {
- for (int i = 0; i < mSampledInputSize; ++i) {
- const int index = mInputIndice[i];
- if (index > inputSize || xCoordinates[index] != mSampledInputXs[i] ||
- yCoordinates[index] != mSampledInputYs[i] || times[index] != mTimes[i]) {
+ const int *const xCoordinates, const int *const yCoordinates, const int *const times,
+ const bool isGeometric) const {
+ if (isGeometric) {
+ for (int i = 0; i < mSampledInputSize; ++i) {
+ const int index = mInputIndice[i];
+ if (index > inputSize || xCoordinates[index] != mSampledInputXs[i] ||
+ yCoordinates[index] != mSampledInputYs[i] || times[index] != mTimes[i]) {
+ return false;
+ }
+ }
+ } else {
+ if (inputSize < mSampledInputSize) {
+ // Assuming the cache is invalid if the previous input size is larger than the new one.
return false;
}
+ for (int i = 0; i < mSampledInputSize && i < MAX_WORD_LENGTH_INTERNAL; ++i) {
+ if (xCoordinates[i] != mSampledInputXs[i]
+ || yCoordinates[i] != mSampledInputYs[i]) {
+ return false;
+ }
+ }
}
return true;
}
diff --git a/native/jni/src/proximity_info_state.h b/native/jni/src/proximity_info_state.h
index d3b4062c8..dd979653f 100644
--- a/native/jni/src/proximity_info_state.h
+++ b/native/jni/src/proximity_info_state.h
@@ -242,7 +242,7 @@ class ProximityInfoState {
const NearKeysDistanceMap *const prevNearKeysDistances,
const NearKeysDistanceMap *const prevPrevNearKeysDistances) const;
bool checkAndReturnIsContinuationPossible(const int inputSize, const int *const xCoordinates,
- const int *const yCoordinates, const int *const times);
+ const int *const yCoordinates, const int *const times, const bool isGeometric) const;
void popInputData();
void updateAlignPointProbabilities(const int start);
bool suppressCharProbabilities(const int index1, const int index2);