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

Commit 54531f81 authored by Michael Wright's avatar Michael Wright Committed by Android (Google) Code Review
Browse files

Merge "Flush pending input events immediately upon channel dispose" into jb-mr2-dev

parents cd928a41 ef17e871
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -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();