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

Commit 07a7b965 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Fix issue when launching Camera

Imagine the following: HostPhotoActivity is above CameraActivity,
in the same task, and not visible. Now, we launch the Camera again
with STILL_IMAGE_CAPTURE, which launches a Trampoline activity
in the same task, which later starts CameraActivity with
CLEAR_TASK. However, in the meantime, since Trampoline activity is
translucent (r.fullscreen == false), we make HostPhotoActivity
visible. Now, since we bring the task to the front, we also create
a snapshot starting window, for which mViewVisibility == VISIBLE
always.

When the previous activity has finished pausing we make
HostPhotoActivity's starting window visible because of the
following:
- TrampolineActivity is on top of HostPhotoActivity, but in AM
sense it's "translucent",
- TrampolineActivity hasn't managed to start CameraActivity
yet.
- HostPhotoActivity.hasContentToDisplay returns true so when
we set the Dummy animation we set the transformation.alpha=1,
making the starting window visible.

We also need to fix a that HostPhotoActivity's starting window
can't affect SystemUI visibiltiy yet.

Test: Above flow
Test: go/wm-smoke
Change-Id: I4a62aaafab4d40e975bc86b53abd0c55c84911c2
Fixes: 64270512
parent e33e796d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ public class AppWindowAnimator {
        }
        // Start out animation gone if window is gone, or visible if window is visible.
        transformation.clear();
        transformation.setAlpha(mAppToken.hasContentToDisplay() ? 1 : 0);
        transformation.setAlpha(mAppToken.isVisible() ? 1 : 0);
        hasTransformation = true;
        mStackClip = stackClip;

@@ -172,7 +172,7 @@ public class AppWindowAnimator {
        animation = sDummyAnimation;
        hasTransformation = true;
        transformation.clear();
        transformation.setAlpha(mAppToken.hasContentToDisplay() ? 1 : 0);
        transformation.setAlpha(mAppToken.isVisible() ? 1 : 0);
    }

    void setNullAnimation() {
+1 −1
Original line number Diff line number Diff line
@@ -1479,7 +1479,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
    // TODO: Another visibility method that was added late in the release to minimize risk.
    @Override
    public boolean canAffectSystemUiFlags() {
        final boolean shown = mWinAnimator.getShown();
        final boolean shown = mWinAnimator.getShown() && mWinAnimator.mShownAlpha > 0f;

        // We only consider the app to be exiting when the animation has started. After the app
        // transition is executed the windows are marked exiting before the new windows have been