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

Commit 95e62812 authored by Tony Wickham's avatar Tony Wickham
Browse files

Some cleanup for handler invalidation

- Cancel reapplyWindowTransformAnim when STATE_HANDLER_INVALIDATED
- Set mActivity and mRecentsView = null in
  invalidateHandlerWithLauncher() instead of posting from
  invalidateHandler()
- Just in case, ignore onActivityInit() if we're already invalidated

Test: Tap repeatedly in nav region in an app, no crash
Fixes: 186983662
Change-Id: I3c005099b46ebb7c9203bcfcceedf48679dd1965
parent b90a951f
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -340,6 +340,10 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
    }

    protected boolean onActivityInit(Boolean alreadyOnHome) {
        if (mStateCallback.hasStates(STATE_HANDLER_INVALIDATED)) {
            return false;
        }

        T createdActivity = mActivityInterface.getCreatedActivity();
        if (createdActivity != null) {
            initTransitionEndpoints(createdActivity.getDeviceProfile());
@@ -571,6 +575,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                }
            });
            reapplyWindowTransformAnim.setDuration(RECENTS_ATTACH_DURATION).start();
            mStateCallback.runOnceAtState(STATE_HANDLER_INVALIDATED,
                    reapplyWindowTransformAnim::cancel);
        } else {
            applyWindowTransform();
        }
@@ -1376,12 +1382,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
        mActivityInitListener.unregister();
        ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mActivityRestartListener);
        mTaskSnapshot = null;
        mHandler.post(() -> {
            // Defer clearing the activity since invalidation can happen over multiple callbacks
            // ie. invalidateHandlerWithLauncher()
            mActivity = null;
            mRecentsView = null;
        });
    }

    private void invalidateHandlerWithLauncher() {
@@ -1392,6 +1392,12 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,

        mRecentsView.removeOnScrollChangedListener(mOnRecentsScrollListener);
        resetLauncherListeners();

        mHandler.post(() -> {
            // Defer clearing the activity since invalidation can happen over multiple callbacks.
            mActivity = null;
            mRecentsView = null;
        });
    }

    private void endLauncherTransitionController() {