Loading java/src/com/android/inputmethod/latin/BinaryDictionary.java +16 −11 Original line number Diff line number Diff line Loading @@ -64,19 +64,22 @@ public class BinaryDictionary extends Dictionary { private final SparseArray<DicTraverseSession> mDicTraverseSessions = new SparseArray<DicTraverseSession>(); // TODO: There should be a way to remove used DicTraverseSession objects from // {@code mDicTraverseSessions}. private DicTraverseSession getTraverseSession(int traverseSessionId) { synchronized(mDicTraverseSessions) { DicTraverseSession traverseSession = mDicTraverseSessions.get(traverseSessionId); if (traverseSession == null) { synchronized(mDicTraverseSessions) { traverseSession = mDicTraverseSessions.get(traverseSessionId); if (traverseSession == null) { traverseSession = new DicTraverseSession(mLocale, mNativeDict); mDicTraverseSessions.put(traverseSessionId, traverseSession); } } } return traverseSession; } } /** * Constructor for the binary dictionary. This is supposed to be called from the Loading Loading @@ -209,18 +212,20 @@ public class BinaryDictionary extends Dictionary { } @Override public synchronized void close() { for (int i = 0; i < mDicTraverseSessions.size(); ++i) { final int key = mDicTraverseSessions.keyAt(i); final DicTraverseSession traverseSession = mDicTraverseSessions.get(key); public void close() { synchronized (mDicTraverseSessions) { final int sessionsSize = mDicTraverseSessions.size(); for (int index = 0; index < sessionsSize; ++index) { final DicTraverseSession traverseSession = mDicTraverseSessions.valueAt(index); if (traverseSession != null) { traverseSession.close(); } } } closeInternal(); } private void closeInternal() { private synchronized void closeInternal() { if (mNativeDict != 0) { closeNative(mNativeDict); mNativeDict = 0; Loading Loading
java/src/com/android/inputmethod/latin/BinaryDictionary.java +16 −11 Original line number Diff line number Diff line Loading @@ -64,19 +64,22 @@ public class BinaryDictionary extends Dictionary { private final SparseArray<DicTraverseSession> mDicTraverseSessions = new SparseArray<DicTraverseSession>(); // TODO: There should be a way to remove used DicTraverseSession objects from // {@code mDicTraverseSessions}. private DicTraverseSession getTraverseSession(int traverseSessionId) { synchronized(mDicTraverseSessions) { DicTraverseSession traverseSession = mDicTraverseSessions.get(traverseSessionId); if (traverseSession == null) { synchronized(mDicTraverseSessions) { traverseSession = mDicTraverseSessions.get(traverseSessionId); if (traverseSession == null) { traverseSession = new DicTraverseSession(mLocale, mNativeDict); mDicTraverseSessions.put(traverseSessionId, traverseSession); } } } return traverseSession; } } /** * Constructor for the binary dictionary. This is supposed to be called from the Loading Loading @@ -209,18 +212,20 @@ public class BinaryDictionary extends Dictionary { } @Override public synchronized void close() { for (int i = 0; i < mDicTraverseSessions.size(); ++i) { final int key = mDicTraverseSessions.keyAt(i); final DicTraverseSession traverseSession = mDicTraverseSessions.get(key); public void close() { synchronized (mDicTraverseSessions) { final int sessionsSize = mDicTraverseSessions.size(); for (int index = 0; index < sessionsSize; ++index) { final DicTraverseSession traverseSession = mDicTraverseSessions.valueAt(index); if (traverseSession != null) { traverseSession.close(); } } } closeInternal(); } private void closeInternal() { private synchronized void closeInternal() { if (mNativeDict != 0) { closeNative(mNativeDict); mNativeDict = 0; Loading