diff options
author | 2012-07-04 19:58:17 -0700 | |
---|---|---|
committer | 2012-07-04 19:58:17 -0700 | |
commit | 7aeb7ef1ab77e7a4372b69b3b67e1dcb1f0d192f (patch) | |
tree | cacd3f445c0585360b486ad4507b3a2c51de25f8 /java/src | |
parent | 7b40c682778a544cf61b211e74b74961ff6e1206 (diff) | |
parent | 8f6c603b3bc9b1f81a0ab2299429d725b463b92f (diff) | |
download | latinime-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.java | 22 |
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) { |