Merge "Flush pending input events immediately upon channel dispose" into jb-mr2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
54531f8195
@@ -372,6 +372,7 @@ public final class InputMethodManager {
|
||||
return;
|
||||
}
|
||||
|
||||
flushPendingEventsLocked();
|
||||
mCurMethod = res.method;
|
||||
if (mCurChannel != null) {
|
||||
mCurChannel.dispose();
|
||||
@@ -718,6 +719,7 @@ public final class InputMethodManager {
|
||||
*/
|
||||
void clearBindingLocked() {
|
||||
clearConnectionLocked();
|
||||
flushPendingEventsLocked();
|
||||
mBindSequence = -1;
|
||||
mCurId = null;
|
||||
mCurMethod = null;
|
||||
@@ -1712,6 +1714,30 @@ public final class InputMethodManager {
|
||||
}
|
||||
}
|
||||
|
||||
private void flushPendingEventsLocked() {
|
||||
mH.removeMessages(MSG_EVENT_TIMEOUT);
|
||||
PendingEvent curr, prev, next;
|
||||
curr = mFirstPendingEvent;
|
||||
prev = null;
|
||||
while (curr != null) {
|
||||
next = curr.mNext;
|
||||
curr.mNext = prev;
|
||||
prev = curr;
|
||||
curr = next;
|
||||
}
|
||||
curr = prev;
|
||||
prev = null;
|
||||
while (curr != null) {
|
||||
Message msg = mH.obtainMessage(MSG_EVENT_TIMEOUT, curr.mSeq, 0, curr);
|
||||
msg.setAsynchronous(true);
|
||||
mH.sendMessage(msg);
|
||||
next = curr.mNext;
|
||||
curr.mNext = prev;
|
||||
prev = curr;
|
||||
curr = next;
|
||||
}
|
||||
}
|
||||
|
||||
public void showInputMethodPicker() {
|
||||
synchronized (mH) {
|
||||
showInputMethodPickerLocked();
|
||||
|
||||
Reference in New Issue
Block a user