From 274323ce8fa11e39ba66e9874c0a576e58046b1b Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Tue, 12 Mar 2013 14:12:39 -0700 Subject: [PATCH] Remove old show/hide messages on new ime (DO NOT MERGE) The previous show/hide messages in the queue were still trying to be honored even after a new ime was attached. Fixes bug 8263462. Change-Id: Iee60dbd1d58542f73aedeac5ccb54cddeb5d5dfe --- .../java/com/android/server/InputMethodManagerService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 6ba5cffcaa669..01f75449c4300 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -1243,6 +1243,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub unbindCurrentMethodLocked(false, false); return; } + // Remove commands relating to the previous service. Otherwise WindowManagerService + // will reject the command because the token attached to these messages is invalid. + mCaller.removeMessages(MSG_SHOW_SOFT_INPUT); + mCaller.removeMessages(MSG_HIDE_SOFT_INPUT); if (DEBUG) Slog.v(TAG, "Initiating attach with token: " + mCurToken); executeOrSendMessage(mCurMethod, mCaller.obtainMessageOO( MSG_ATTACH_TOKEN, mCurMethod, mCurToken));