diff options
author | 2013-09-08 20:20:51 -0700 | |
---|---|---|
committer | 2013-09-08 20:20:51 -0700 | |
commit | 1d818b06fef962003221a74ecbb0d9c525cd6968 (patch) | |
tree | 4d25b00d8f71490ab8a6064b0e0f70767a9962b8 /java/src | |
parent | 8a325042ddfde71e0f9dbc712180803f532c7a7d (diff) | |
parent | 773f2272421738b400c5eb24b36d36b9d3b29207 (diff) | |
download | latinime-1d818b06fef962003221a74ecbb0d9c525cd6968.tar.gz latinime-1d818b06fef962003221a74ecbb0d9c525cd6968.tar.xz latinime-1d818b06fef962003221a74ecbb0d9c525cd6968.zip |
am 773f2272: Fix: wrong locking order.
* commit '773f2272421738b400c5eb24b36d36b9d3b29207':
Fix: wrong locking order.
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index b92283c5b..e62a35af3 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -84,9 +84,11 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { /** Whether to support dynamically updating the dictionary */ private final boolean mIsUpdatable; + // TODO: remove, once dynamic operations will be serialized /** Controls access to the shared binary dictionary file across multiple instances. */ private final DictionaryController mSharedDictionaryController; + // TODO: remove, once dynamic operations will be serialized /** Controls access to the local binary dictionary for this instance. */ private final DictionaryController mLocalDictionaryController = new DictionaryController(); @@ -446,9 +448,9 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { private final void syncReloadDictionaryInternal() { // Ensure that only one thread attempts to read or write to the shared binary dictionary // file at the same time. - mLocalDictionaryController.writeLock().lock(); + mSharedDictionaryController.writeLock().lock(); try { - mSharedDictionaryController.writeLock().lock(); + mLocalDictionaryController.writeLock().lock(); try { final long time = SystemClock.uptimeMillis(); final boolean dictionaryFileExists = dictionaryFileExists(); @@ -483,10 +485,10 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { } mLocalDictionaryController.mLastUpdateTime = time; } finally { - mSharedDictionaryController.writeLock().unlock(); + mLocalDictionaryController.writeLock().unlock(); } } finally { - mLocalDictionaryController.writeLock().unlock(); + mSharedDictionaryController.writeLock().unlock(); } } @@ -519,16 +521,16 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { private class AsyncLoadDictionaryToMemoryTask extends Thread { @Override public void run() { - mLocalDictionaryController.writeLock().lock(); + mSharedDictionaryController.readLock().lock(); try { - mSharedDictionaryController.readLock().lock(); + mLocalDictionaryController.writeLock().lock(); try { loadDictionaryAsync(); } finally { - mSharedDictionaryController.readLock().unlock(); + mLocalDictionaryController.writeLock().unlock(); } } finally { - mLocalDictionaryController.writeLock().unlock(); + mSharedDictionaryController.readLock().unlock(); } } } |