Fix Keyboard.getKey as thread safe

This is a follow up of Id962e670.

Change-Id: I9e8542bff9e8faf57f934051fe612463c99ad61f
main
Tadashi G. Takaoka 2012-07-05 10:44:10 +09:00
parent e9a86e2cdb
commit 8f6c603b3b
1 changed files with 13 additions and 11 deletions

View File

@ -185,19 +185,21 @@ public class Keyboard {
if (code == CODE_UNSPECIFIED) { if (code == CODE_UNSPECIFIED) {
return null; return null;
} }
final int index = mKeyCache.indexOfKey(code); synchronized (mKeyCache) {
if (index >= 0) { final int index = mKeyCache.indexOfKey(code);
return mKeyCache.valueAt(index); 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) { public boolean hasKey(Key aKey) {