From ddbed48ce9ee31e306e1d3ecace727162b463953 Mon Sep 17 00:00:00 2001 From: Trevor Terris Date: Wed, 5 May 2021 17:21:25 -0400 Subject: [PATCH] Use onFinishInput to flush dictionary state --- .../openboard/inputmethod/latin/Dictionary.java | 4 ++++ .../latin/DictionaryFacilitatorImpl.java | 17 ++++------------- .../latin/ExpandableBinaryDictionary.java | 5 +++-- .../personalization/UserHistoryDictionary.java | 7 ------- 4 files changed, 11 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/Dictionary.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/Dictionary.java index e30d690ce..5196f9c7d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/Dictionary.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/Dictionary.java @@ -160,6 +160,10 @@ public abstract class Dictionary { // empty base implementation } + public void onFinishInput() { + //empty base implementation + } + /** * Subclasses may override to indicate that this Dictionary is not yet properly initialized. */ diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java index c16cd6bc6..eeb9f57f2 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java @@ -225,7 +225,10 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator { @Override public void onFinishInput(Context context) { - flushDictionaries(); + for (final String dictType : ALL_DICTIONARY_TYPES) { + Dictionary dict = mDictionaryGroup.getDict(dictType); + if (dict != null) dict.onFinishInput(); + } } @Override @@ -460,18 +463,6 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator { } } - public void flushDictionaries() { - final DictionaryGroup dictionaryGroupToClose; - synchronized (mLock) { - dictionaryGroupToClose = mDictionaryGroup; - mDictionaryGroup = new DictionaryGroup(); - } - for (final String dictType : ALL_DICTIONARY_TYPES) { - ExpandableBinaryDictionary dict = dictionaryGroupToClose.getSubDict(dictType); - if (dict != null) dict.asyncFlushBinaryDictionary(); - } - } - @UsedForTesting public ExpandableBinaryDictionary getSubDictForTesting(final String dictName) { return mDictionaryGroup.getSubDict(dictName); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/ExpandableBinaryDictionary.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/ExpandableBinaryDictionary.java index ca5e496fd..5da8a0b1a 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/ExpandableBinaryDictionary.java @@ -632,7 +632,8 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { /** * Flush binary dictionary to dictionary file. */ - public void asyncFlushBinaryDictionary() { + @Override + public void onFinishInput() { asyncExecuteTaskWithWriteLock(new Runnable() { @Override public void run() { @@ -641,7 +642,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { return; } if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) { - binaryDictionary.flushWithGC(); + binaryDictionary.flushWithGCIfHasUpdated(); } else { binaryDictionary.flush(); } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/personalization/UserHistoryDictionary.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/personalization/UserHistoryDictionary.java index 4a2e0ba45..19947ba3c 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/personalization/UserHistoryDictionary.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/personalization/UserHistoryDictionary.java @@ -86,13 +86,6 @@ public class UserHistoryDictionary extends ExpandableBinaryDictionary { isValid, 1 /* count */, timestamp); } - @Override - public void close() { - // Flush pending writes. - asyncFlushBinaryDictionary(); - super.close(); - } - @Override protected Map getHeaderAttributeMap() { final Map attributeMap = super.getHeaderAttributeMap();