aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2013-10-01 07:08:10 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-10-01 07:08:11 +0000
commit126d758c1e8db969ad1c9e5d801f3075e2061cc1 (patch)
treeb7b4ae32021d8b4ed79895b941cebe263c283b6b
parent74730a4600620b5ccfcf3d16666ad0239aec18b6 (diff)
parent03cb8f751a7f35e9159c724a2d25528b86287b57 (diff)
downloadlatinime-126d758c1e8db969ad1c9e5d801f3075e2061cc1.tar.gz
latinime-126d758c1e8db969ad1c9e5d801f3075e2061cc1.tar.xz
latinime-126d758c1e8db969ad1c9e5d801f3075e2061cc1.zip
Merge "Quit blocking getSuggestion during GC."
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java9
-rw-r--r--java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java24
2 files changed, 21 insertions, 12 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index b7b08cd97..d9bad7e57 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -270,18 +270,11 @@ public final class BinaryDictionary extends Dictionary {
return getBigramProbabilityNative(mNativeDict, codePoints0, codePoints1);
}
- private void runGCIfRequired() {
- if (needsToRunGC(true /* mindsBlockByGC */)) {
- flushWithGC();
- }
- }
-
// Add a unigram entry to binary dictionary in native code.
public void addUnigramWord(final String word, final int probability) {
if (TextUtils.isEmpty(word)) {
return;
}
- runGCIfRequired();
final int[] codePoints = StringUtils.toCodePointArray(word);
addUnigramWordNative(mNativeDict, codePoints, probability);
}
@@ -291,7 +284,6 @@ public final class BinaryDictionary extends Dictionary {
if (TextUtils.isEmpty(word0) || TextUtils.isEmpty(word1)) {
return;
}
- runGCIfRequired();
final int[] codePoints0 = StringUtils.toCodePointArray(word0);
final int[] codePoints1 = StringUtils.toCodePointArray(word1);
addBigramWordsNative(mNativeDict, codePoints0, codePoints1, probability);
@@ -302,7 +294,6 @@ public final class BinaryDictionary extends Dictionary {
if (TextUtils.isEmpty(word0) || TextUtils.isEmpty(word1)) {
return;
}
- runGCIfRequired();
final int[] codePoints0 = StringUtils.toCodePointArray(word0);
final int[] codePoints1 = StringUtils.toCodePointArray(word1);
removeBigramWordsNative(mNativeDict, codePoints0, codePoints1);
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 2d1ca51e2..306c1a253 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -273,6 +273,24 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
lastModifiedTime);
}
+ private void runGCIfRequired() {
+ if (!ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) return;
+ if (mBinaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+ if (setIsRegeneratingIfNotRegenerating()) {
+ getExecutor(mFilename).execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ mBinaryDictionary.flushWithGC();
+ } finally {
+ mFilenameDictionaryUpdateController.mIsRegenerating.set(false);
+ }
+ }
+ });
+ }
+ }
+ }
+
/**
* Dynamically adds a word unigram to the dictionary. May overwrite an existing entry.
*/
@@ -282,7 +300,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
Log.w(TAG, "addWordDynamically is called for non-updatable dictionary: " + mFilename);
return;
}
-
+ runGCIfRequired();
getExecutor(mFilename).execute(new Runnable() {
@Override
public void run() {
@@ -306,7 +324,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
+ mFilename);
return;
}
-
+ runGCIfRequired();
getExecutor(mFilename).execute(new Runnable() {
@Override
public void run() {
@@ -330,7 +348,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
+ mFilename);
return;
}
-
+ runGCIfRequired();
getExecutor(mFilename).execute(new Runnable() {
@Override
public void run() {