Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 126d758c authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Quit blocking getSuggestion during GC."

parents 74730a46 03cb8f75
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -270,18 +270,11 @@ public final class BinaryDictionary extends Dictionary {
        return getBigramProbabilityNative(mNativeDict, codePoints0, codePoints1);
    }

    private void runGCIfRequired() {
        if (needsToRunGC(true /* mindsBlockByGC */)) {
            flushWithGC();
        }
    }

    // Add a unigram entry to binary dictionary in native code.
    public void addUnigramWord(final String word, final int probability) {
        if (TextUtils.isEmpty(word)) {
            return;
        }
        runGCIfRequired();
        final int[] codePoints = StringUtils.toCodePointArray(word);
        addUnigramWordNative(mNativeDict, codePoints, probability);
    }
@@ -291,7 +284,6 @@ public final class BinaryDictionary extends Dictionary {
        if (TextUtils.isEmpty(word0) || TextUtils.isEmpty(word1)) {
            return;
        }
        runGCIfRequired();
        final int[] codePoints0 = StringUtils.toCodePointArray(word0);
        final int[] codePoints1 = StringUtils.toCodePointArray(word1);
        addBigramWordsNative(mNativeDict, codePoints0, codePoints1, probability);
@@ -302,7 +294,6 @@ public final class BinaryDictionary extends Dictionary {
        if (TextUtils.isEmpty(word0) || TextUtils.isEmpty(word1)) {
            return;
        }
        runGCIfRequired();
        final int[] codePoints0 = StringUtils.toCodePointArray(word0);
        final int[] codePoints1 = StringUtils.toCodePointArray(word1);
        removeBigramWordsNative(mNativeDict, codePoints0, codePoints1);
+21 −3
Original line number Diff line number Diff line
@@ -273,6 +273,24 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
                lastModifiedTime);
    }

    private void runGCIfRequired() {
        if (!ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) return;
        if (mBinaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
            if (setIsRegeneratingIfNotRegenerating()) {
                getExecutor(mFilename).execute(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            mBinaryDictionary.flushWithGC();
                        } finally {
                            mFilenameDictionaryUpdateController.mIsRegenerating.set(false);
                        }
                    }
                });
            }
        }
    }

    /**
     * Dynamically adds a word unigram to the dictionary. May overwrite an existing entry.
     */
@@ -282,7 +300,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
            Log.w(TAG, "addWordDynamically is called for non-updatable dictionary: " + mFilename);
            return;
        }

        runGCIfRequired();
        getExecutor(mFilename).execute(new Runnable() {
            @Override
            public void run() {
@@ -306,7 +324,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
                    + mFilename);
            return;
        }

        runGCIfRequired();
        getExecutor(mFilename).execute(new Runnable() {
            @Override
            public void run() {
@@ -330,7 +348,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
                    + mFilename);
            return;
        }

        runGCIfRequired();
        getExecutor(mFilename).execute(new Runnable() {
            @Override
            public void run() {