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

Commit 3e4e4af4 authored by Svetoslav Ganov's avatar Svetoslav Ganov
Browse files

Turning off accessibility feature reboots the device

1. The touch explorer uses delayed injection of events
   which can happen after its hosting accessibility
   input filer has been unregistered, thus the explorer
   was trying to inject events when this is not allowed.
   Now upon unregistration of the accessibility explorer
   it resets the state of the touch explorer it hosts.

bug:5105956

Change-Id: I720682abf93382aedf4f431eaac90fd2c781e442
parent 9fbceea0
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -56,6 +56,11 @@ public class AccessibilityInputFilter extends InputFilter {
         * @param policyFlags The policy flags associated with the event.
         */
        public void clear(MotionEvent event, int policyFlags);

        /**
         * Requests that the explorer clears its internal state.
         */
        public void clear();
    }

    private TouchExplorer mTouchExplorer;
@@ -71,6 +76,7 @@ public class AccessibilityInputFilter extends InputFilter {
        if (DEBUG) {
            Slog.d(TAG, "Accessibility input filter installed.");
        }
        mTouchExplorer = new TouchExplorer(this, mContext);
        super.onInstalled();
    }

@@ -79,6 +85,7 @@ public class AccessibilityInputFilter extends InputFilter {
        if (DEBUG) {
            Slog.d(TAG, "Accessibility input filter uninstalled.");
        }
        mTouchExplorer.clear();
        super.onUninstalled();
    }

@@ -93,11 +100,7 @@ public class AccessibilityInputFilter extends InputFilter {
            int deviceId = event.getDeviceId();
            if (mTouchscreenSourceDeviceId != deviceId) {
                mTouchscreenSourceDeviceId = deviceId;
                if (mTouchExplorer != null) {
                mTouchExplorer.clear(motionEvent, policyFlags);
                } else {
                    mTouchExplorer = new TouchExplorer(this, mContext);
                }
            }
            if ((policyFlags & WindowManagerPolicy.FLAG_PASS_TO_USER) != 0) {
                mTouchExplorer.onMotionEvent(motionEvent, policyFlags);
+2 −1
Original line number Diff line number Diff line
@@ -858,8 +858,9 @@ public class TouchExplorer implements Explorer {
    /**
     * Clears the internal state of this explorer.
     */
    private void clear() {
    public void clear() {
        mSendHoverDelayed.remove();
        mPerformLongPressDelayed.remove();
        mPointerTracker.clear();
        mLastTouchExploreEvent = null;
        mCurrentState = STATE_TOUCH_EXPLORING;