From cc470c78e4538ec05ed78959da041e2ce5ba846a Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Wed, 11 Jul 2012 12:07:44 +0900 Subject: [PATCH] Move an implementation detail to native code (A107) Java code does not have to know about this implementation detail: the generic method should do the dispatching, instead of having the caller call either method. Change-Id: Ic13727f0cb18f4ced2c356cce2f8d710588c0421 --- ...android_inputmethod_latin_BinaryDictionary.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp index 5e3167bc3..8970e671d 100644 --- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp @@ -147,10 +147,17 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jobject object, jint *prevWordChars = prevWordForBigrams ? env->GetIntArrayElements(prevWordForBigrams, 0) : 0; jsize prevWordLength = prevWordChars ? env->GetArrayLength(prevWordForBigrams) : 0; - int count = dictionary->getSuggestions(pInfo, xCoordinates, yCoordinates, times, pointerIds, - inputCodes, arraySize, prevWordChars, prevWordLength, commitPoint, isGesture, - useFullEditDistance, (unsigned short*) outputChars, - frequencies, spaceIndices); + + int count; + if (isGesture || arraySize > 1) { + count = dictionary->getSuggestions(pInfo, xCoordinates, yCoordinates, times, pointerIds, + inputCodes, arraySize, prevWordChars, prevWordLength, commitPoint, isGesture, + useFullEditDistance, (unsigned short*) outputChars, frequencies, spaceIndices); + } else { + count = dictionary->getBigrams(prevWordChars, prevWordLength, inputCodes, + arraySize, (unsigned short*) outputChars, frequencies); + } + if (prevWordChars) { env->ReleaseIntArrayElements(prevWordForBigrams, prevWordChars, JNI_ABORT); }