aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src/proximity_info.cpp
diff options
context:
space:
mode:
authorKen Wakasa <kwakasa@google.com>2012-08-09 02:57:39 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-08-09 02:57:39 -0700
commitfb662603b8fff9c55e848d2c2613234feb8a11e9 (patch)
treed4ce2f58fa4910a6a597be5e24d5b0e990e1c12d /native/jni/src/proximity_info.cpp
parentb481b045f31bbadd75b0901a2c301d09c0e7ba19 (diff)
parentd26d20fe225bb2ac70ea184af8e85fb995f44a68 (diff)
downloadlatinime-fb662603b8fff9c55e848d2c2613234feb8a11e9.tar.gz
latinime-fb662603b8fff9c55e848d2c2613234feb8a11e9.tar.xz
latinime-fb662603b8fff9c55e848d2c2613234feb8a11e9.zip
am d26d20fe: am 71b379df: Merge "Use GetStringUTFRegion" into jb-mr1-dev
* commit 'd26d20fe225bb2ac70ea184af8e85fb995f44a68': Use GetStringUTFRegion
Diffstat (limited to 'native/jni/src/proximity_info.cpp')
-rw-r--r--native/jni/src/proximity_info.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/native/jni/src/proximity_info.cpp b/native/jni/src/proximity_info.cpp
index 7bae41362..4f6507e53 100644
--- a/native/jni/src/proximity_info.cpp
+++ b/native/jni/src/proximity_info.cpp
@@ -47,7 +47,7 @@ static inline void safeGetOrFillZeroFloatArrayRegion(JNIEnv *env, jfloatArray jA
}
}
-ProximityInfo::ProximityInfo(JNIEnv *env, const char *localeCStr, const int maxProximityCharsSize,
+ProximityInfo::ProximityInfo(JNIEnv *env, const jstring localeJStr, const int maxProximityCharsSize,
const int keyboardWidth, const int keyboardHeight, const int gridWidth,
const int gridHeight, const int mostCommonKeyWidth, const jintArray proximityChars,
const int keyCount, const jintArray keyXCoordinates, const jintArray keyYCoordinates,
@@ -62,12 +62,16 @@ ProximityInfo::ProximityInfo(JNIEnv *env, const char *localeCStr, const int maxP
KEY_COUNT(min(keyCount, MAX_KEY_COUNT_IN_A_KEYBOARD)),
HAS_TOUCH_POSITION_CORRECTION_DATA(keyCount > 0 && keyXCoordinates && keyYCoordinates
&& keyWidths && keyHeights && keyCharCodes && sweetSpotCenterXs
- && sweetSpotCenterYs && sweetSpotRadii),
- mLocaleStr(localeCStr) {
+ && sweetSpotCenterYs && sweetSpotRadii) {
const int proximityGridLength = GRID_WIDTH * GRID_HEIGHT * MAX_PROXIMITY_CHARS_SIZE;
if (DEBUG_PROXIMITY_INFO) {
AKLOGI("Create proximity info array %d", proximityGridLength);
}
+ const jsize localeCStrUtf8Length = env->GetStringUTFLength(localeJStr);
+ char localeCStr[localeCStrUtf8Length + 1];
+ env->GetStringUTFRegion(localeJStr, 0, env->GetStringLength(localeJStr), localeCStr);
+ localeCStr[localeCStrUtf8Length] = '\0';
+ mLocaleStr = new std::string(localeCStr);
mProximityCharsArray = new int32_t[proximityGridLength];
safeGetOrFillZeroIntArrayRegion(env, proximityChars, proximityGridLength, mProximityCharsArray);
safeGetOrFillZeroIntArrayRegion(env, keyXCoordinates, KEY_COUNT, mKeyXCoordinates);
@@ -94,6 +98,7 @@ void ProximityInfo::initializeCodeToKeyIndex() {
}
ProximityInfo::~ProximityInfo() {
+ delete mLocaleStr;
delete[] mProximityCharsArray;
}
@@ -166,7 +171,7 @@ void ProximityInfo::calculateNearbyKeyCodes(
}
}
const int additionalProximitySize =
- AdditionalProximityChars::getAdditionalCharsSize(&mLocaleStr, primaryKey);
+ AdditionalProximityChars::getAdditionalCharsSize(mLocaleStr, primaryKey);
if (additionalProximitySize > 0) {
inputCodes[insertPos++] = ADDITIONAL_PROXIMITY_CHAR_DELIMITER_CODE;
if (insertPos >= MAX_PROXIMITY_CHARS_SIZE) {
@@ -177,7 +182,7 @@ void ProximityInfo::calculateNearbyKeyCodes(
}
const int32_t *additionalProximityChars =
- AdditionalProximityChars::getAdditionalChars(&mLocaleStr, primaryKey);
+ AdditionalProximityChars::getAdditionalChars(mLocaleStr, primaryKey);
for (int j = 0; j < additionalProximitySize; ++j) {
const int32_t ac = additionalProximityChars[j];
int k = 0;