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

Commit 8818edbe authored by Jim Miller's avatar Jim Miller
Browse files

Fix 6485058: remove OnTriggerListeners from Wave*Methods in cleanup

This fixes a rare crash that could happen when the device orientation
changes while the handle is held over a target.  LockScreen.cleanUp()
was being called which set mCallback to null which then causes it
to crash in MultiWaveViewMethods.onTrigger().

The solution is to also remove OnTriggerListeners in LockScreen.cleanup().

Change-Id: I487c7c9dbbe40417e685b39f2e79b1c43b30fa00
parent ab1c5456
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -129,6 +129,9 @@ class LockScreen extends LinearLayout implements KeyguardScreen {

        // Get the target position for the given resource. Returns -1 if not found.
        public int getTargetPosition(int resourceId);

        // Clean up when this widget is going away
        public void cleanUp();
    }

    class SlidingTabMethods implements SlidingTab.OnTriggerListener, UnlockWidgetCommonMethods {
@@ -197,6 +200,10 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
        public int getTargetPosition(int resourceId) {
            return -1; // Not supported
        }

        public void cleanUp() {
            mSlidingTab.setOnTriggerListener(null);
        }
    }

    class WaveViewMethods implements WaveView.OnTriggerListener, UnlockWidgetCommonMethods {
@@ -240,6 +247,9 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
        public int getTargetPosition(int resourceId) {
            return -1; // Not supported
        }
        public void cleanUp() {
            mWaveView.setOnTriggerListener(null);
        }
    }

    private Intent getAssistIntent() {
@@ -374,6 +384,10 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
        public int getTargetPosition(int resourceId) {
            return mMultiWaveView.getTargetPosition(resourceId);
        }

        public void cleanUp() {
            mMultiWaveView.setOnTriggerListener(null);
        }
    }

    private void requestUnlockScreen() {
@@ -592,6 +606,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
    public void cleanUp() {
        mUpdateMonitor.removeCallback(mInfoCallback); // this must be first
        mUpdateMonitor.removeCallback(mSimStateCallback);
        mUnlockWidgetMethods.cleanUp();
        mLockPatternUtils = null;
        mUpdateMonitor = null;
        mCallback = null;