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

Commit b88ba47c authored by Tony Huang's avatar Tony Huang
Browse files

Fix gmail flicker issue in split screen

This issue is caused by surface invisible before transition.
And this symptom caused by we got wrong resume callback by another
side split activity.

Fix this by change prioirty in TaskFragment#resumeTopActivity.
We should check non activities are pausing before checking
top activity resumed.

Fix: 257008620
Test: manual
Test: pass existing tests
Change-Id: I6ef987bf694678b8422f3e7526944ee9004c61e1
parent 6a110d68
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -1165,8 +1165,16 @@ class TaskFragment extends WindowContainer<WindowContainer> {
        }

        next.delayedResume = false;
        final TaskDisplayArea taskDisplayArea = getDisplayArea();

        // If we are currently pausing an activity, then don't do anything until that is done.
        final boolean allPausedComplete = mRootWindowContainer.allPausedActivitiesComplete();
        if (!allPausedComplete) {
            ProtoLog.v(WM_DEBUG_STATES,
                    "resumeTopActivity: Skip resume: some activity pausing.");
            return false;
        }

        final TaskDisplayArea taskDisplayArea = getDisplayArea();
        // If the top activity is the resumed one, nothing to do.
        if (mResumedActivity == next && next.isState(RESUMED)
                && taskDisplayArea.allResumedActivitiesComplete()) {
@@ -1189,14 +1197,6 @@ class TaskFragment extends WindowContainer<WindowContainer> {
            return false;
        }

        // If we are currently pausing an activity, then don't do anything until that is done.
        final boolean allPausedComplete = mRootWindowContainer.allPausedActivitiesComplete();
        if (!allPausedComplete) {
            ProtoLog.v(WM_DEBUG_STATES,
                    "resumeTopActivity: Skip resume: some activity pausing.");
            return false;
        }

        // If we are sleeping, and there is no resumed activity, and the top activity is paused,
        // well that is the state we want.
        if (mLastPausedActivity == next && shouldSleepOrShutDownActivities()) {