diff options
author | 2012-07-05 10:44:10 +0900 | |
---|---|---|
committer | 2012-07-05 11:43:43 +0900 | |
commit | 8f6c603b3bc9b1f81a0ab2299429d725b463b92f (patch) | |
tree | bc3a9f48fbb84b3a1c2214e07ffe3dc3171ea8d5 /java/src | |
parent | e9a86e2cdb58dd8d5601138294521e966d164520 (diff) | |
download | latinime-8f6c603b3bc9b1f81a0ab2299429d725b463b92f.tar.gz latinime-8f6c603b3bc9b1f81a0ab2299429d725b463b92f.tar.xz latinime-8f6c603b3bc9b1f81a0ab2299429d725b463b92f.zip |
Fix Keyboard.getKey as thread safe
This is a follow up of Id962e670.
Change-Id: I9e8542bff9e8faf57f934051fe612463c99ad61f
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) { |