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

Commit 4fa6f63f authored by Tracy Zhou's avatar Tracy Zhou
Browse files

Make sure that live tile overlay is added only once.

Users report seeing empty launcher. After adding some logging, live tile
overlay can be added twice and removed only once. I added some logic to
make sure that it can only be added once.

Test: manual
Fixes: 135864059
Change-Id: I9d3325c56e76654f1397cc65979b97a6c0a80aee
(cherry picked from commit d3ef57b4)
parent d1f712d1
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -217,6 +217,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>

    private AnimationFactory mAnimationFactory = (t) -> { };
    private LiveTileOverlay mLiveTileOverlay = new LiveTileOverlay();
    private boolean mLiveTileOverlayAttached = false;

    private boolean mWasLauncherAlreadyVisible;

@@ -323,8 +324,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>

        mRecentsView = activity.getOverviewPanel();
        linkRecentsViewScroll();
        mRecentsView.setLiveTileOverlay(mLiveTileOverlay);
        mActivity.getRootView().getOverlay().add(mLiveTileOverlay);
        addLiveTileOverlay();

        mStateCallback.setState(STATE_LAUNCHER_PRESENT);
        if (alreadyOnHome) {
@@ -972,7 +972,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
            @Override
            public void onAnimationStart(Animator animation) {
                if (mActivity != null) {
                    mActivity.getRootView().getOverlay().remove(mLiveTileOverlay);
                    removeLiveTileOverlay();
                }
            }

@@ -1071,7 +1071,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
        mRecentsView.onGestureAnimationEnd();

        mActivity.getRootView().setOnApplyWindowInsetsListener(null);
        mActivity.getRootView().getOverlay().remove(mLiveTileOverlay);
        removeLiveTileOverlay();
    }

    private void endLauncherTransitionController() {
@@ -1201,6 +1201,22 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
        updateFinalShift();
    }

    private synchronized void addLiveTileOverlay() {
        if (!mLiveTileOverlayAttached) {
            mActivity.getRootView().getOverlay().add(mLiveTileOverlay);
            mRecentsView.setLiveTileOverlay(mLiveTileOverlay);
            mLiveTileOverlayAttached = true;
        }
    }

    private synchronized void removeLiveTileOverlay() {
        if (mLiveTileOverlayAttached) {
            mActivity.getRootView().getOverlay().remove(mLiveTileOverlay);
            mRecentsView.setLiveTileOverlay(null);
            mLiveTileOverlayAttached = false;
        }
    }

    public static float getHiddenTargetAlpha(RemoteAnimationTargetCompat app, float expectedAlpha) {
        if (!isNotInRecents(app)) {
            return 0;
+1 −1
Original line number Diff line number Diff line
@@ -825,7 +825,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
     */
    public void onSwipeUpAnimationSuccess() {
        if (getRunningTaskView() != null) {
            float startProgress = ENABLE_QUICKSTEP_LIVE_TILE.get()
            float startProgress = ENABLE_QUICKSTEP_LIVE_TILE.get() && mLiveTileOverlay != null
                    ? mLiveTileOverlay.cancelIconAnimation()
                    : 0f;
            animateUpRunningTaskIconScale(startProgress);