aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2012-07-04 19:58:17 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-07-04 19:58:17 -0700
commit7aeb7ef1ab77e7a4372b69b3b67e1dcb1f0d192f (patch)
treecacd3f445c0585360b486ad4507b3a2c51de25f8 /java/src
parent7b40c682778a544cf61b211e74b74961ff6e1206 (diff)
parent8f6c603b3bc9b1f81a0ab2299429d725b463b92f (diff)
downloadlatinime-7aeb7ef1ab77e7a4372b69b3b67e1dcb1f0d192f.tar.gz
latinime-7aeb7ef1ab77e7a4372b69b3b67e1dcb1f0d192f.tar.xz
latinime-7aeb7ef1ab77e7a4372b69b3b67e1dcb1f0d192f.zip
Merge "Fix Keyboard.getKey as thread safe"
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java22
1 files changed, 12 insertions, 10 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 1b4cea2e7..1aec00129 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -185,19 +185,21 @@ public class Keyboard {
if (code == CODE_UNSPECIFIED) {
return null;
}
- final int index = mKeyCache.indexOfKey(code);
- if (index >= 0) {
- return mKeyCache.valueAt(index);
- }
+ synchronized (mKeyCache) {
+ final int index = mKeyCache.indexOfKey(code);
+ if (index >= 0) {
+ return mKeyCache.valueAt(index);
+ }
- for (final Key key : mKeys) {
- if (key.mCode == code) {
- mKeyCache.put(code, key);
- return key;
+ for (final Key key : mKeys) {
+ if (key.mCode == code) {
+ mKeyCache.put(code, key);
+ return key;
+ }
}
+ mKeyCache.put(code, null);
+ return null;
}
- mKeyCache.put(code, null);
- return null;
}
public boolean hasKey(Key aKey) {