aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2011-08-16 13:58:37 +0900
committerJean Chalard <jchalard@google.com>2011-08-16 13:58:37 +0900
commit70b9c5d9913b676f21fe29f795bdb25324509205 (patch)
treebad6c4277eb541f8487bad9cac909ff0f6b07834 /java/src
parent8f7f406c5bed8966310ba8ea6d8f93cbaa94cbd4 (diff)
downloadlatinime-70b9c5d9913b676f21fe29f795bdb25324509205.tar.gz
latinime-70b9c5d9913b676f21fe29f795bdb25324509205.tar.xz
latinime-70b9c5d9913b676f21fe29f795bdb25324509205.zip
Make the spell checker re-entrant.
Until the dictionary itself is re-entrant, unfortunately we have to synchronize accesses to it. Bug: 5156851 Change-Id: I1629a160d707e6fa1ad80cba828798abb24b68b1
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index 44e999572..d2b6bcdf2 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -126,7 +126,7 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
// Note : this must be reentrant
/**
* Gets a list of suggestions for a specific string. This returns a list of possible
- * corrections for the text passed as an arguments. It may split or group words, and
+ * corrections for the text passed as an argument. It may split or group words, and
* even perform grammatical analysis.
*/
@Override
@@ -153,9 +153,14 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
composer.add(character, proximities,
WordComposer.NOT_A_COORDINATE, WordComposer.NOT_A_COORDINATE);
}
- dictionary.getWords(composer, suggestionsGatherer, mProximityInfo);
- final boolean isInDict = dictionary.isValidWord(text);
- final String[] suggestions = suggestionsGatherer.getGatheredSuggestions();
+ final boolean isInDict;
+ final String[] suggestions;
+ synchronized(dictionary) {
+ // TODO: make the dictionary reentrant so that we don't have to synchronize here
+ dictionary.getWords(composer, suggestionsGatherer, mProximityInfo);
+ isInDict = dictionary.isValidWord(text);
+ suggestions = suggestionsGatherer.getGatheredSuggestions();
+ }
final int flags =
(isInDict ? SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY : 0)