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

Commit da5263eb authored by Tiger Huang's avatar Tiger Huang Committed by Android (Google) Code Review
Browse files

Merge "Let TaskSnapshotWindow compute its window frame" into tm-dev

parents 5c341457 d8aa7f78
Loading
Loading
Loading
Loading
+25 −3
Original line number Diff line number Diff line
@@ -20,8 +20,10 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.graphics.Color.WHITE;
import static android.graphics.Color.alpha;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.view.ViewRootImpl.LOCAL_LAYOUT;
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS;
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
import static android.view.WindowLayout.UNSPECIFIED_LENGTH;
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
import static android.view.WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES;
@@ -51,6 +53,7 @@ import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.ActivityManager.TaskDescription;
import android.app.ActivityThread;
import android.app.WindowConfiguration;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -77,6 +80,7 @@ import android.view.SurfaceSession;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.WindowLayout;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.window.ClientWindowFrames;
@@ -208,6 +212,8 @@ public class TaskSnapshotWindow {
        final IWindowSession session = WindowManagerGlobal.getWindowSession();
        final SurfaceControl surfaceControl = new SurfaceControl();
        final ClientWindowFrames tmpFrames = new ClientWindowFrames();
        final WindowLayout windowLayout = new WindowLayout();
        final Rect displayCutoutSafe = new Rect();

        final InsetsSourceControl[] tmpControls = new InsetsSourceControl[0];
        final MergedConfiguration tmpMergedConfiguration = new MergedConfiguration();
@@ -244,9 +250,25 @@ public class TaskSnapshotWindow {
        window.setOuter(snapshotSurface);
        try {
            Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "TaskSnapshot#relayout");
            if (LOCAL_LAYOUT) {
                if (!surfaceControl.isValid()) {
                    session.updateVisibility(window, layoutParams, View.VISIBLE,
                            tmpMergedConfiguration, surfaceControl, tmpInsetsState, tmpControls);
                }
                tmpInsetsState.getDisplayCutoutSafe(displayCutoutSafe);
                final WindowConfiguration winConfig =
                        tmpMergedConfiguration.getMergedConfiguration().windowConfiguration;
                windowLayout.computeFrames(layoutParams, tmpInsetsState, displayCutoutSafe,
                        winConfig.getBounds(), winConfig.getWindowingMode(), UNSPECIFIED_LENGTH,
                        UNSPECIFIED_LENGTH, info.requestedVisibilities,
                        null /* attachedWindowFrame */, 1f /* compatScale */, tmpFrames);
                session.updateLayout(window, layoutParams, 0 /* flags */, tmpFrames,
                        UNSPECIFIED_LENGTH, UNSPECIFIED_LENGTH);
            } else {
                session.relayout(window, layoutParams, -1, -1, View.VISIBLE, 0,
                        tmpFrames, tmpMergedConfiguration, surfaceControl, tmpInsetsState,
                        tmpControls, new Bundle());
            }
            Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
        } catch (RemoteException e) {
            snapshotSurface.clearWindowSynced();