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

Commit f464e293 authored by Riddle Hsu's avatar Riddle Hsu Committed by Automerger Merge Worker
Browse files

Remove home snapshot immediately am: 106f745c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12421225

Change-Id: I8f9cac7e7afc6deb26f2afb55b145b8df015f46f
parents fdeef2b1 106f745c
Loading
Loading
Loading
Loading
+11 −3
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.server.wm;
package com.android.server.wm;


import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.graphics.Color.WHITE;
import static android.graphics.Color.WHITE;
import static android.graphics.Color.alpha;
import static android.graphics.Color.alpha;
import static android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
import static android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
@@ -142,6 +143,7 @@ class TaskSnapshotSurface implements StartingSurface {
    private final Handler mHandler;
    private final Handler mHandler;
    private boolean mSizeMismatch;
    private boolean mSizeMismatch;
    private final Paint mBackgroundPaint = new Paint();
    private final Paint mBackgroundPaint = new Paint();
    private final int mActivityType;
    private final int mStatusBarColor;
    private final int mStatusBarColor;
    @VisibleForTesting final SystemBarBackgroundPainter mSystemBarBackgroundPainter;
    @VisibleForTesting final SystemBarBackgroundPainter mSystemBarBackgroundPainter;
    private final int mOrientationOnCreation;
    private final int mOrientationOnCreation;
@@ -173,6 +175,7 @@ class TaskSnapshotSurface implements StartingSurface {
        final int windowFlags;
        final int windowFlags;
        final int windowPrivateFlags;
        final int windowPrivateFlags;
        final int currentOrientation;
        final int currentOrientation;
        final int activityType;
        final InsetsState insetsState;
        final InsetsState insetsState;
        synchronized (service.mGlobalLock) {
        synchronized (service.mGlobalLock) {
            final WindowState mainWindow = activity.findMainWindow();
            final WindowState mainWindow = activity.findMainWindow();
@@ -241,6 +244,7 @@ class TaskSnapshotSurface implements StartingSurface {
            taskBounds = new Rect();
            taskBounds = new Rect();
            task.getBounds(taskBounds);
            task.getBounds(taskBounds);
            currentOrientation = topFullscreenOpaqueWindow.getConfiguration().orientation;
            currentOrientation = topFullscreenOpaqueWindow.getConfiguration().orientation;
            activityType = activity.getActivityType();


            final InsetsPolicy insetsPolicy = topFullscreenOpaqueWindow.getDisplayContent()
            final InsetsPolicy insetsPolicy = topFullscreenOpaqueWindow.getDisplayContent()
                    .getInsetsPolicy();
                    .getInsetsPolicy();
@@ -261,7 +265,8 @@ class TaskSnapshotSurface implements StartingSurface {
        }
        }
        final TaskSnapshotSurface snapshotSurface = new TaskSnapshotSurface(service, window,
        final TaskSnapshotSurface snapshotSurface = new TaskSnapshotSurface(service, window,
                surfaceControl, snapshot, layoutParams.getTitle(), taskDescription, sysUiVis,
                surfaceControl, snapshot, layoutParams.getTitle(), taskDescription, sysUiVis,
                windowFlags, windowPrivateFlags, taskBounds, currentOrientation, insetsState);
                windowFlags, windowPrivateFlags, taskBounds, currentOrientation, activityType,
                insetsState);
        window.setOuter(snapshotSurface);
        window.setOuter(snapshotSurface);
        try {
        try {
            session.relayout(window, window.mSeq, layoutParams, -1, -1, View.VISIBLE, 0, -1,
            session.relayout(window, window.mSeq, layoutParams, -1, -1, View.VISIBLE, 0, -1,
@@ -282,7 +287,7 @@ class TaskSnapshotSurface implements StartingSurface {
    TaskSnapshotSurface(WindowManagerService service, Window window, SurfaceControl surfaceControl,
    TaskSnapshotSurface(WindowManagerService service, Window window, SurfaceControl surfaceControl,
            TaskSnapshot snapshot, CharSequence title, TaskDescription taskDescription,
            TaskSnapshot snapshot, CharSequence title, TaskDescription taskDescription,
            int sysUiVis, int windowFlags, int windowPrivateFlags, Rect taskBounds,
            int sysUiVis, int windowFlags, int windowPrivateFlags, Rect taskBounds,
            int currentOrientation, InsetsState insetsState) {
            int currentOrientation, int activityType, InsetsState insetsState) {
        mService = service;
        mService = service;
        mSurface = service.mSurfaceFactory.get();
        mSurface = service.mSurfaceFactory.get();
        mHandler = new Handler(mService.mH.getLooper());
        mHandler = new Handler(mService.mH.getLooper());
@@ -298,6 +303,7 @@ class TaskSnapshotSurface implements StartingSurface {
                windowPrivateFlags, sysUiVis, taskDescription, 1f, insetsState);
                windowPrivateFlags, sysUiVis, taskDescription, 1f, insetsState);
        mStatusBarColor = taskDescription.getStatusBarColor();
        mStatusBarColor = taskDescription.getStatusBarColor();
        mOrientationOnCreation = currentOrientation;
        mOrientationOnCreation = currentOrientation;
        mActivityType = activityType;
        mTransaction = mService.mTransactionFactory.get();
        mTransaction = mService.mTransactionFactory.get();
    }
    }


@@ -305,7 +311,9 @@ class TaskSnapshotSurface implements StartingSurface {
    public void remove() {
    public void remove() {
        synchronized (mService.mGlobalLock) {
        synchronized (mService.mGlobalLock) {
            final long now = SystemClock.uptimeMillis();
            final long now = SystemClock.uptimeMillis();
            if (mSizeMismatch && now - mShownTime < SIZE_MISMATCH_MINIMUM_TIME_MS) {
            if (mSizeMismatch && now - mShownTime < SIZE_MISMATCH_MINIMUM_TIME_MS
                    // Show the latest content as soon as possible for unlocking to home.
                    && mActivityType != ACTIVITY_TYPE_HOME) {
                mHandler.postAtTime(this::remove, mShownTime + SIZE_MISMATCH_MINIMUM_TIME_MS);
                mHandler.postAtTime(this::remove, mShownTime + SIZE_MISMATCH_MINIMUM_TIME_MS);
                ProtoLog.v(WM_DEBUG_STARTING_WINDOW,
                ProtoLog.v(WM_DEBUG_STARTING_WINDOW,
                        "Defer removing snapshot surface in %dms", (now - mShownTime));
                        "Defer removing snapshot surface in %dms", (now - mShownTime));
+2 −1
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.server.wm;
package com.android.server.wm;


import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
@@ -88,7 +89,7 @@ public class TaskSnapshotSurfaceTest extends WindowTestsBase {
                0 /* systemUiVisibility */, false /* isTranslucent */);
                0 /* systemUiVisibility */, false /* isTranslucent */);
        mSurface = new TaskSnapshotSurface(mWm, new Window(), new SurfaceControl(), snapshot, "Test",
        mSurface = new TaskSnapshotSurface(mWm, new Window(), new SurfaceControl(), snapshot, "Test",
                createTaskDescription(Color.WHITE, Color.RED, Color.BLUE), sysuiVis, windowFlags, 0,
                createTaskDescription(Color.WHITE, Color.RED, Color.BLUE), sysuiVis, windowFlags, 0,
                taskBounds, ORIENTATION_PORTRAIT, new InsetsState());
                taskBounds, ORIENTATION_PORTRAIT, ACTIVITY_TYPE_STANDARD, new InsetsState());
    }
    }


    private static TaskDescription createTaskDescription(int background, int statusBar,
    private static TaskDescription createTaskDescription(int background, int statusBar,