From 8f6c603b3bc9b1f81a0ab2299429d725b463b92f Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Thu, 5 Jul 2012 10:44:10 +0900 Subject: Fix Keyboard.getKey as thread safe This is a follow up of Id962e670. Change-Id: I9e8542bff9e8faf57f934051fe612463c99ad61f --- .../com/android/inputmethod/keyboard/Keyboard.java | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'java/src') 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) { -- cgit v1.2.3-83-g751a