From ea8f8da1acf4082b56cb461048d9038f634439be Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Fri, 15 Nov 2013 17:34:45 +0900
Subject: [PATCH] Fix unusual NPE after onDestroy

Bug: 11673978
Change-Id: I4d5268312911685ff1ca9483a62442a1a9686c62
---
 java/src/com/android/inputmethod/latin/LatinIME.java | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 32e5e833ed..77d07019f4 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -725,8 +725,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         LatinImeLogger.commit();
         LatinImeLogger.onDestroy();
         if (mInputUpdater != null) {
-            mInputUpdater.onDestroy();
-            mInputUpdater = null;
+            mInputUpdater.quitLooper();
         }
         super.onDestroy();
     }
@@ -1824,13 +1823,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode());
     }
 
-    private static final class InputUpdater implements Handler.Callback {
+    static final class InputUpdater implements Handler.Callback {
         private final Handler mHandler;
         private final LatinIME mLatinIme;
         private final Object mLock = new Object();
         private boolean mInBatchInput; // synchronized using {@link #mLock}.
 
-        private InputUpdater(final LatinIME latinIme) {
+        InputUpdater(final LatinIME latinIme) {
             final HandlerThread handlerThread = new HandlerThread(
                     InputUpdater.class.getSimpleName());
             handlerThread.start();
@@ -1947,7 +1946,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
                     .sendToTarget();
         }
 
-        private void onDestroy() {
+        void quitLooper() {
             mHandler.removeMessages(MSG_GET_SUGGESTED_WORDS);
             mHandler.removeMessages(MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP);
             mHandler.getLooper().quit();
-- 
GitLab