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

Commit f6f4c305 authored by wilsonshih's avatar wilsonshih
Browse files

Correct visible status of an activity if no more transition will happen

When user turn screen off during an opening activity transition,
because there won't trigger another transtion for turning screen off,
so the Activity will stay visible if the opening transition did not
finish before the activity report pause complete.
When an activity become invisible and there is no more transition
will happen, also check whether the screen is truned off, so it can
commit invisible after transition finish.

Bug:235381910
Test: enable shell transition, run
atest MultiDisplayPolicyTests#testExternalDisplayToggleState

Change-Id: Ibffa434cbc2ae2a3126d3c678953580ef564020b
parent 3590c754
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Slog;
import android.util.SparseArray;
import android.view.Display;
import android.view.SurfaceControl;
import android.view.WindowManager;
import android.view.animation.Animation;
@@ -635,7 +636,11 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
                // remove the surfaces yet. If it is currently visible, but not expected-visible,
                // then doing commitVisibility here would actually be out-of-order and leave the
                // activity in a bad state.
                if (!visibleAtTransitionEnd && !ar.isVisibleRequested()) {
                // TODO (b/243755838) Create a screen off transition to correct the visible status
                // of activities.
                final boolean isScreenOff = ar.mDisplayContent == null
                        || ar.mDisplayContent.getDisplayInfo().state == Display.STATE_OFF;
                if ((!visibleAtTransitionEnd || isScreenOff) && !ar.isVisibleRequested()) {
                    final boolean commitVisibility = !checkEnterPipOnFinish(ar);
                    // Avoid commit visibility if entering pip or else we will get a sudden
                    // "flash" / surface going invisible for a split second.