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

Commit dbadee96 authored by Jean Chalard's avatar Jean Chalard
Browse files

Do not create a handler thread for each session

Bug: 13710224
Bug: 12821388
Bug: 12667742
Change-Id: I6188e0240193d2bca789110e7660a0f31bbafc62
parent 89df8029
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -130,8 +130,11 @@ public final class InputLogic {
        // so we try using some heuristics to find out about these and fix them.
        mConnection.tryFixLyingCursorPosition();
        cancelDoubleSpacePeriodCountdown();
        mInputLogicHandler.destroy();
        if (InputLogicHandler.NULL_HANDLER == mInputLogicHandler) {
            mInputLogicHandler = new InputLogicHandler(mLatinIME, this);
        } else {
            mInputLogicHandler.reset();
        }
    }

    /**
@@ -142,8 +145,7 @@ public final class InputLogic {
            mConnection.finishComposingText();
        }
        resetComposingState(true /* alsoResetLastComposedWord */);
        mInputLogicHandler.destroy();
        mInputLogicHandler = InputLogicHandler.NULL_HANDLER;
        mInputLogicHandler.reset();
    }

    /**
+3 −3
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ class InputLogicHandler implements Handler.Callback {
    // is initialized, though probably only the monkey can actually do this.
    public static final InputLogicHandler NULL_HANDLER = new InputLogicHandler() {
        @Override
        public void destroy() {}
        public void reset() {}
        @Override
        public boolean handleMessage(final Message msg) { return true; }
        @Override
@@ -75,8 +75,8 @@ class InputLogicHandler implements Handler.Callback {
        mInputLogic = inputLogic;
    }

    public void destroy() {
        mNonUIThreadHandler.getLooper().quit();
    public void reset() {
        mNonUIThreadHandler.removeCallbacksAndMessages(null);
    }

    /**