From 96f0ae5e68a865d390e3623eebe0fda30c3a62a8 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Tue, 2 Sep 2014 19:34:57 +0900 Subject: [PATCH] [ML6] Have asyncReloadMainDictionary support multiple locales Change-Id: I4c3dfaad38ec1cc91d1a9f81d5ff45ef12f70029 --- .../latin/DictionaryFacilitator.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java index 31ff88e3c..c20546607 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java +++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java @@ -309,7 +309,7 @@ public class DictionaryFacilitator { mDictionaryGroup = newDictionaryGroup; mIsUserDictEnabled = UserBinaryDictionary.isEnabled(context); if (null == newDictionaryGroup.getDict(Dictionary.TYPE_MAIN)) { - asyncReloadMainDictionary(context, newLocaleToUse, listener); + asyncReloadUninitializedMainDictionaries(context, newLocales, listener); } } if (listener != null) { @@ -327,21 +327,24 @@ public class DictionaryFacilitator { } } - private void asyncReloadMainDictionary(final Context context, final Locale locale, - final DictionaryInitializationListener listener) { + private void asyncReloadUninitializedMainDictionaries(final Context context, + final Locale[] locales, final DictionaryInitializationListener listener) { final CountDownLatch latchForWaitingLoadingMainDictionary = new CountDownLatch(1); mLatchForWaitingLoadingMainDictionary = latchForWaitingLoadingMainDictionary; ExecutorUtils.getExecutor("InitializeBinaryDictionary").execute(new Runnable() { @Override public void run() { - final Dictionary mainDict = - DictionaryFactory.createMainDictionaryFromManager(context, locale); - synchronized (mLock) { - if (locale.equals(mDictionaryGroup.mLocale)) { - mDictionaryGroup.setMainDict(mainDict); - } else { - // Dictionary facilitator has been reset for another locale. - mainDict.close(); + for (final Locale locale : locales) { + final DictionaryGroup dictionaryGroup = mDictionaryGroup; + final Dictionary mainDict = + DictionaryFactory.createMainDictionaryFromManager(context, locale); + synchronized (mLock) { + if (locale.equals(dictionaryGroup.mLocale)) { + dictionaryGroup.setMainDict(mainDict); + } else { + // Dictionary facilitator has been reset for another locale. + mainDict.close(); + } } } if (listener != null) {