diff options
author | 2013-10-03 10:19:57 -0700 | |
---|---|---|
committer | 2013-10-03 10:19:57 -0700 | |
commit | 6f5d2ded3fe105b40bdf4f419fe7426421548aff (patch) | |
tree | c8e0029da66671565b364423172a0ea2ca762207 /java/src | |
parent | 2d514c81db1c78971ab452e7950b2e09ba465bf2 (diff) | |
parent | a2174bad22c722f31f864ec1b673661061591fd6 (diff) | |
download | latinime-6f5d2ded3fe105b40bdf4f419fe7426421548aff.tar.gz latinime-6f5d2ded3fe105b40bdf4f419fe7426421548aff.tar.xz latinime-6f5d2ded3fe105b40bdf4f419fe7426421548aff.zip |
am a2174bad: am 5fa96540: Merge "Clear traverse sessions when closing."
* commit 'a2174bad22c722f31f864ec1b673661061591fd6':
Clear traverse sessions when closing.
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/BinaryDictionary.java | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java index 61ccfcfad..fdde98da1 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java @@ -35,6 +35,7 @@ import java.util.Locale; /** * Implements a static, compacted, binary dictionary of standard words. */ +// TODO: All methods which should be locked need to have a suffix "Locked". public final class BinaryDictionary extends Dictionary { private static final String TAG = BinaryDictionary.class.getSimpleName(); @@ -283,22 +284,23 @@ public final class BinaryDictionary extends Dictionary { removeBigramWordsNative(mNativeDict, codePoints0, codePoints1); } - public void flush() { - if (!isValidDictionary()) return; - flushNative(mNativeDict, mDictFilePath); - closeNative(mNativeDict); + private void reopen() { + close(); final File dictFile = new File(mDictFilePath); mNativeDict = openNative(dictFile.getAbsolutePath(), 0 /* startOffset */, dictFile.length(), true /* isUpdatable */); } + public void flush() { + if (!isValidDictionary()) return; + flushNative(mNativeDict, mDictFilePath); + reopen(); + } + public void flushWithGC() { if (!isValidDictionary()) return; flushWithGCNative(mNativeDict, mDictFilePath); - closeNative(mNativeDict); - final File dictFile = new File(mDictFilePath); - mNativeDict = openNative(dictFile.getAbsolutePath(), 0 /* startOffset */, - dictFile.length(), true /* isUpdatable */); + reopen(); } public boolean needsToRunGC() { @@ -338,21 +340,23 @@ public final class BinaryDictionary extends Dictionary { traverseSession.close(); } } + mDicTraverseSessions.clear(); } - closeInternal(); + closeInternalLocked(); } - private synchronized void closeInternal() { + private synchronized void closeInternalLocked() { if (mNativeDict != 0) { closeNative(mNativeDict); mNativeDict = 0; } } + // TODO: Manage BinaryDictionary instances without using WeakReference or something. @Override protected void finalize() throws Throwable { try { - closeInternal(); + closeInternalLocked(); } finally { super.finalize(); } |