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

Commit 81a32027 authored by Peter Kalauskas's avatar Peter Kalauskas Committed by Android (Google) Code Review
Browse files

Merge changes from topic "new-task-snapshots-rvc-dev" into rvc-dev

* changes:
  Disable reduced scale if reduced scale config is 0
  Store original task width and height instead of scale
parents 7def6932 84f02a81
Loading
Loading
Loading
Loading
+33 −37
Original line number Original line Diff line number Diff line
@@ -2012,15 +2012,16 @@ public class ActivityManager {
        /** See {@link android.view.Surface.Rotation} */
        /** See {@link android.view.Surface.Rotation} */
        @Surface.Rotation
        @Surface.Rotation
        private int mRotation;
        private int mRotation;
        /** The size of the snapshot before scaling */
        private final Point mTaskSize;
        private final Rect mContentInsets;
        private final Rect mContentInsets;
        // Whether this snapshot is a down-sampled version of the full resolution, used mainly for
        // Whether this snapshot is a down-sampled version of the high resolution snapshot, used
        // low-ram devices
        // mainly for loading snapshots quickly from disk when user is flinging fast
        private final boolean mIsLowResolution;
        private final boolean mIsLowResolution;
        // Whether or not the snapshot is a real snapshot or an app-theme generated snapshot due to
        // Whether or not the snapshot is a real snapshot or an app-theme generated snapshot due to
        // the task having a secure window or having previews disabled
        // the task having a secure window or having previews disabled
        private final boolean mIsRealSnapshot;
        private final boolean mIsRealSnapshot;
        private final int mWindowingMode;
        private final int mWindowingMode;
        private final float mScale;
        private final int mSystemUiVisibility;
        private final int mSystemUiVisibility;
        private final boolean mIsTranslucent;
        private final boolean mIsTranslucent;
        // Must be one of the named color spaces, otherwise, always use SRGB color space.
        // Must be one of the named color spaces, otherwise, always use SRGB color space.
@@ -2028,9 +2029,9 @@ public class ActivityManager {


        public TaskSnapshot(long id,
        public TaskSnapshot(long id,
                @NonNull ComponentName topActivityComponent, GraphicBuffer snapshot,
                @NonNull ComponentName topActivityComponent, GraphicBuffer snapshot,
                @NonNull ColorSpace colorSpace, int orientation, int rotation, Rect contentInsets,
                @NonNull ColorSpace colorSpace, int orientation, int rotation, Point taskSize,
                boolean isLowResolution, float scale, boolean isRealSnapshot, int windowingMode,
                Rect contentInsets, boolean isLowResolution, boolean isRealSnapshot,
                int systemUiVisibility, boolean isTranslucent) {
                int windowingMode, int systemUiVisibility, boolean isTranslucent) {
            mId = id;
            mId = id;
            mTopActivityComponent = topActivityComponent;
            mTopActivityComponent = topActivityComponent;
            mSnapshot = snapshot;
            mSnapshot = snapshot;
@@ -2038,9 +2039,9 @@ public class ActivityManager {
                    ? ColorSpace.get(ColorSpace.Named.SRGB) : colorSpace;
                    ? ColorSpace.get(ColorSpace.Named.SRGB) : colorSpace;
            mOrientation = orientation;
            mOrientation = orientation;
            mRotation = rotation;
            mRotation = rotation;
            mTaskSize = new Point(taskSize);
            mContentInsets = new Rect(contentInsets);
            mContentInsets = new Rect(contentInsets);
            mIsLowResolution = isLowResolution;
            mIsLowResolution = isLowResolution;
            mScale = scale;
            mIsRealSnapshot = isRealSnapshot;
            mIsRealSnapshot = isRealSnapshot;
            mWindowingMode = windowingMode;
            mWindowingMode = windowingMode;
            mSystemUiVisibility = systemUiVisibility;
            mSystemUiVisibility = systemUiVisibility;
@@ -2057,9 +2058,9 @@ public class ActivityManager {
                    : ColorSpace.get(ColorSpace.Named.SRGB);
                    : ColorSpace.get(ColorSpace.Named.SRGB);
            mOrientation = source.readInt();
            mOrientation = source.readInt();
            mRotation = source.readInt();
            mRotation = source.readInt();
            mTaskSize = source.readParcelable(null /* classLoader */);
            mContentInsets = source.readParcelable(null /* classLoader */);
            mContentInsets = source.readParcelable(null /* classLoader */);
            mIsLowResolution = source.readBoolean();
            mIsLowResolution = source.readBoolean();
            mScale = source.readFloat();
            mIsRealSnapshot = source.readBoolean();
            mIsRealSnapshot = source.readBoolean();
            mWindowingMode = source.readInt();
            mWindowingMode = source.readInt();
            mSystemUiVisibility = source.readInt();
            mSystemUiVisibility = source.readInt();
@@ -2110,6 +2111,14 @@ public class ActivityManager {
            return mRotation;
            return mRotation;
        }
        }


        /**
         * @return The size of the task at the point this snapshot was taken.
         */
        @UnsupportedAppUsage
        public Point getTaskSize() {
            return mTaskSize;
        }

        /**
        /**
         * @return The system/content insets on the snapshot. These can be clipped off in order to
         * @return The system/content insets on the snapshot. These can be clipped off in order to
         *         remove any areas behind system bars in the snapshot.
         *         remove any areas behind system bars in the snapshot.
@@ -2159,14 +2168,6 @@ public class ActivityManager {
            return mSystemUiVisibility;
            return mSystemUiVisibility;
        }
        }


        /**
         * @return The scale this snapshot was taken in.
         */
        @UnsupportedAppUsage
        public float getScale() {
            return mScale;
        }

        @Override
        @Override
        public int describeContents() {
        public int describeContents() {
            return 0;
            return 0;
@@ -2180,9 +2181,9 @@ public class ActivityManager {
            dest.writeInt(mColorSpace.getId());
            dest.writeInt(mColorSpace.getId());
            dest.writeInt(mOrientation);
            dest.writeInt(mOrientation);
            dest.writeInt(mRotation);
            dest.writeInt(mRotation);
            dest.writeParcelable(mTaskSize, 0);
            dest.writeParcelable(mContentInsets, 0);
            dest.writeParcelable(mContentInsets, 0);
            dest.writeBoolean(mIsLowResolution);
            dest.writeBoolean(mIsLowResolution);
            dest.writeFloat(mScale);
            dest.writeBoolean(mIsRealSnapshot);
            dest.writeBoolean(mIsRealSnapshot);
            dest.writeInt(mWindowingMode);
            dest.writeInt(mWindowingMode);
            dest.writeInt(mSystemUiVisibility);
            dest.writeInt(mSystemUiVisibility);
@@ -2200,9 +2201,11 @@ public class ActivityManager {
                    + " mColorSpace=" + mColorSpace.toString()
                    + " mColorSpace=" + mColorSpace.toString()
                    + " mOrientation=" + mOrientation
                    + " mOrientation=" + mOrientation
                    + " mRotation=" + mRotation
                    + " mRotation=" + mRotation
                    + " mTaskSize=" + mTaskSize.toString()
                    + " mContentInsets=" + mContentInsets.toShortString()
                    + " mContentInsets=" + mContentInsets.toShortString()
                    + " mIsLowResolution=" + mIsLowResolution + " mScale=" + mScale
                    + " mIsLowResolution=" + mIsLowResolution
                    + " mIsRealSnapshot=" + mIsRealSnapshot + " mWindowingMode=" + mWindowingMode
                    + " mIsRealSnapshot=" + mIsRealSnapshot
                    + " mWindowingMode=" + mWindowingMode
                    + " mSystemUiVisibility=" + mSystemUiVisibility
                    + " mSystemUiVisibility=" + mSystemUiVisibility
                    + " mIsTranslucent=" + mIsTranslucent;
                    + " mIsTranslucent=" + mIsTranslucent;
        }
        }
@@ -2224,9 +2227,8 @@ public class ActivityManager {
            private ColorSpace mColorSpace;
            private ColorSpace mColorSpace;
            private int mOrientation;
            private int mOrientation;
            private int mRotation;
            private int mRotation;
            private Point mTaskSize;
            private Rect mContentInsets;
            private Rect mContentInsets;
            private boolean mIsLowResolution;
            private float mScaleFraction;
            private boolean mIsRealSnapshot;
            private boolean mIsRealSnapshot;
            private int mWindowingMode;
            private int mWindowingMode;
            private int mSystemUiVisibility;
            private int mSystemUiVisibility;
@@ -2263,25 +2265,16 @@ public class ActivityManager {
                return this;
                return this;
            }
            }


            public Builder setContentInsets(Rect contentInsets) {
                mContentInsets = contentInsets;
                return this;
            }

            /**
            /**
             * Set to true if this is a low-resolution snapshot stored in *_reduced.jpg.
             * Sets the original size of the task
             */
             */
            public Builder setIsLowResolution(boolean isLowResolution) {
            public Builder setTaskSize(Point size) {
                mIsLowResolution = isLowResolution;
                mTaskSize = size;
                return this;
                return this;
            }
            }


            public float getScaleFraction() {
            public Builder setContentInsets(Rect contentInsets) {
                return mScaleFraction;
                mContentInsets = contentInsets;
            }

            public Builder setScaleFraction(float scaleFraction) {
                mScaleFraction = scaleFraction;
                return this;
                return this;
            }
            }


@@ -2322,9 +2315,12 @@ public class ActivityManager {
                        mColorSpace,
                        mColorSpace,
                        mOrientation,
                        mOrientation,
                        mRotation,
                        mRotation,
                        mTaskSize,
                        mContentInsets,
                        mContentInsets,
                        mIsLowResolution,
                        // When building a TaskSnapshot with the Builder class, isLowResolution
                        mScaleFraction,
                        // is always false. Low-res snapshots are only created when loading from
                        // disk.
                        false /* isLowResolution */,
                        mIsRealSnapshot,
                        mIsRealSnapshot,
                        mWindowingMode,
                        mWindowingMode,
                        mSystemUiVisibility,
                        mSystemUiVisibility,
+3 −1
Original line number Original line Diff line number Diff line
@@ -2752,7 +2752,9 @@


    <!-- The amount to scale reduced scale snapshots for Overview and snapshot starting windows.
    <!-- The amount to scale reduced scale snapshots for Overview and snapshot starting windows.
         Reduced scale snapshots are loaded before full screen snapshots to improve load times and
         Reduced scale snapshots are loaded before full screen snapshots to improve load times and
         minimize the chance the user will see an empty task card. -->
         minimize the chance the user will see an empty task card. If set to 0, reduced scale
         snapshots are disabled, and snapshots will only be stored at config_highResTaskSnapshotScale
         -->
    <item name="config_lowResTaskSnapshotScale" format="float" type="dimen">0.5</item>
    <item name="config_lowResTaskSnapshotScale" format="float" type="dimen">0.5</item>


    <!-- Feature flag to store TaskSnapshot in 16 bit pixel format to save memory. -->
    <!-- Feature flag to store TaskSnapshot in 16 bit pixel format to save memory. -->
+3 −1
Original line number Original line Diff line number Diff line
@@ -62,7 +62,9 @@ public class ThumbnailData {
        orientation = snapshot.getOrientation();
        orientation = snapshot.getOrientation();
        rotation = snapshot.getRotation();
        rotation = snapshot.getRotation();
        reducedResolution = snapshot.isLowResolution();
        reducedResolution = snapshot.isLowResolution();
        scale = snapshot.getScale();
        // TODO(b/149579527): Pass task size instead of computing scale.
        // Assume width and height were scaled the same; compute scale only for width
        scale = (float) thumbnail.getWidth() / snapshot.getTaskSize().x;
        isRealSnapshot = snapshot.isRealSnapshot();
        isRealSnapshot = snapshot.isRealSnapshot();
        isTranslucent = snapshot.isTranslucent();
        isTranslucent = snapshot.isTranslucent();
        windowingMode = snapshot.getWindowingMode();
        windowingMode = snapshot.getWindowingMode();
+6 −1
Original line number Original line Diff line number Diff line
@@ -32,7 +32,12 @@
     int32 system_ui_visibility = 8;
     int32 system_ui_visibility = 8;
     bool is_translucent = 9;
     bool is_translucent = 9;
     string top_activity_component = 10;
     string top_activity_component = 10;
     float scale = 11;
     // deprecated because original width and height are stored now instead of the scale.
     float legacy_scale = 11 [deprecated=true];
     int64 id = 12;
     int64 id = 12;
     int32 rotation = 13;
     int32 rotation = 13;
     // The task width when the snapshot was taken
     int32 task_width = 14;
     // The task height when the snapshot was taken
     int32 task_height = 15;
 }
 }
+30 −39
Original line number Original line Diff line number Diff line
@@ -18,19 +18,18 @@ package com.android.server.wm;


import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;


import static com.android.server.wm.TaskSnapshotPersister.DISABLE_HIGH_RES_BITMAPS;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_SCREENSHOT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_SCREENSHOT;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.ActivityManager.TaskSnapshot;
import android.app.ActivityManager.TaskSnapshot;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Bitmap;
import android.graphics.GraphicBuffer;
import android.graphics.GraphicBuffer;
import android.graphics.PixelFormat;
import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.RecordingCanvas;
import android.graphics.RecordingCanvas;
import android.graphics.Rect;
import android.graphics.Rect;
import android.graphics.RenderNode;
import android.graphics.RenderNode;
@@ -89,14 +88,6 @@ class TaskSnapshotController {
    @VisibleForTesting
    @VisibleForTesting
    static final int SNAPSHOT_MODE_NONE = 2;
    static final int SNAPSHOT_MODE_NONE = 2;


    /**
     * Constant for <code>scaleFactor</code> when calling {@link #snapshotTask} which is
     * interpreted as using the most appropriate scale ratio for the system.
     * This may yield a smaller ratio on low memory devices.
     */
    @VisibleForTesting
    static final float SNAPSHOT_SCALE_AUTO = -1f;

    private final WindowManagerService mService;
    private final WindowManagerService mService;


    private final TaskSnapshotCache mCache;
    private final TaskSnapshotCache mCache;
@@ -229,7 +220,7 @@ class TaskSnapshotController {
    @Nullable TaskSnapshot getSnapshot(int taskId, int userId, boolean restoreFromDisk,
    @Nullable TaskSnapshot getSnapshot(int taskId, int userId, boolean restoreFromDisk,
            boolean isLowResolution) {
            boolean isLowResolution) {
        return mCache.getSnapshot(taskId, userId, restoreFromDisk, isLowResolution
        return mCache.getSnapshot(taskId, userId, restoreFromDisk, isLowResolution
                || DISABLE_HIGH_RES_BITMAPS);
                && mPersister.enableLowResSnapshots());
    }
    }


    /**
    /**
@@ -273,8 +264,6 @@ class TaskSnapshotController {
     * information from the task and populates the builder.
     * information from the task and populates the builder.
     *
     *
     * @param task the task to capture
     * @param task the task to capture
     * @param scaleFraction the scale fraction between 0-1.0, or {@link #SNAPSHOT_SCALE_AUTO}
     *                      to automatically select
     * @param pixelFormat the desired pixel format, or {@link PixelFormat#UNKNOWN} to
     * @param pixelFormat the desired pixel format, or {@link PixelFormat#UNKNOWN} to
     *                    automatically select
     *                    automatically select
     * @param builder the snapshot builder to populate
     * @param builder the snapshot builder to populate
@@ -282,8 +271,7 @@ class TaskSnapshotController {
     * @return true if the state of the task is ok to proceed
     * @return true if the state of the task is ok to proceed
     */
     */
    @VisibleForTesting
    @VisibleForTesting
    boolean prepareTaskSnapshot(Task task, float scaleFraction, int pixelFormat,
    boolean prepareTaskSnapshot(Task task, int pixelFormat, TaskSnapshot.Builder builder) {
            TaskSnapshot.Builder builder) {
        if (!mService.mPolicy.isScreenOn()) {
        if (!mService.mPolicy.isScreenOn()) {
            if (DEBUG_SCREENSHOT) {
            if (DEBUG_SCREENSHOT) {
                Slog.i(TAG_WM, "Attempted to take screenshot while display was off.");
                Slog.i(TAG_WM, "Attempted to take screenshot while display was off.");
@@ -314,18 +302,6 @@ class TaskSnapshotController {
        builder.setId(System.currentTimeMillis());
        builder.setId(System.currentTimeMillis());
        builder.setContentInsets(getInsets(mainWindow));
        builder.setContentInsets(getInsets(mainWindow));


        final boolean isLowRamDevice = ActivityManager.isLowRamDeviceStatic();

        if (scaleFraction == SNAPSHOT_SCALE_AUTO) {
            builder.setScaleFraction(isLowRamDevice
                    ? mPersister.getLowResScale()
                    : mHighResTaskSnapshotScale);
            builder.setIsLowResolution(isLowRamDevice);
        } else {
            builder.setScaleFraction(scaleFraction);
            builder.setIsLowResolution(scaleFraction < 1.0f);
        }

        final boolean isWindowTranslucent = mainWindow.getAttrs().format != PixelFormat.OPAQUE;
        final boolean isWindowTranslucent = mainWindow.getAttrs().format != PixelFormat.OPAQUE;
        final boolean isShowWallpaper = (mainWindow.getAttrs().flags & FLAG_SHOW_WALLPAPER) != 0;
        final boolean isShowWallpaper = (mainWindow.getAttrs().flags & FLAG_SHOW_WALLPAPER) != 0;


@@ -349,15 +325,25 @@ class TaskSnapshotController {
        return true;
        return true;
    }
    }


    @Nullable
    SurfaceControl.ScreenshotGraphicBuffer createTaskSnapshot(@NonNull Task task,
            TaskSnapshot.Builder builder) {
        Point taskSize = new Point();
        final SurfaceControl.ScreenshotGraphicBuffer taskSnapshot = createTaskSnapshot(task,
                mHighResTaskSnapshotScale, builder.getPixelFormat(), taskSize);
        builder.setTaskSize(taskSize);
        return taskSnapshot;
    }

    @Nullable
    @Nullable
    SurfaceControl.ScreenshotGraphicBuffer createTaskSnapshot(@NonNull Task task,
    SurfaceControl.ScreenshotGraphicBuffer createTaskSnapshot(@NonNull Task task,
            float scaleFraction) {
            float scaleFraction) {
        return createTaskSnapshot(task, scaleFraction, PixelFormat.RGBA_8888);
        return createTaskSnapshot(task, scaleFraction, PixelFormat.RGBA_8888, null);
    }
    }


    @Nullable
    @Nullable
    SurfaceControl.ScreenshotGraphicBuffer createTaskSnapshot(@NonNull Task task,
    SurfaceControl.ScreenshotGraphicBuffer createTaskSnapshot(@NonNull Task task,
            float scaleFraction, int pixelFormat) {
            float scaleFraction, int pixelFormat, Point outTaskSize) {
        if (task.getSurfaceControl() == null) {
        if (task.getSurfaceControl() == null) {
            if (DEBUG_SCREENSHOT) {
            if (DEBUG_SCREENSHOT) {
                Slog.w(TAG_WM, "Failed to take screenshot. No surface control for " + task);
                Slog.w(TAG_WM, "Failed to take screenshot. No surface control for " + task);
@@ -369,6 +355,10 @@ class TaskSnapshotController {
        final SurfaceControl.ScreenshotGraphicBuffer screenshotBuffer =
        final SurfaceControl.ScreenshotGraphicBuffer screenshotBuffer =
                SurfaceControl.captureLayers(
                SurfaceControl.captureLayers(
                        task.getSurfaceControl(), mTmpRect, scaleFraction, pixelFormat);
                        task.getSurfaceControl(), mTmpRect, scaleFraction, pixelFormat);
        if (outTaskSize != null) {
            outTaskSize.x = mTmpRect.width();
            outTaskSize.y = mTmpRect.height();
        }
        final GraphicBuffer buffer = screenshotBuffer != null ? screenshotBuffer.getGraphicBuffer()
        final GraphicBuffer buffer = screenshotBuffer != null ? screenshotBuffer.getGraphicBuffer()
                : null;
                : null;
        if (buffer == null || buffer.getWidth() <= 1 || buffer.getHeight() <= 1) {
        if (buffer == null || buffer.getWidth() <= 1 || buffer.getHeight() <= 1) {
@@ -379,21 +369,20 @@ class TaskSnapshotController {


    @Nullable
    @Nullable
    TaskSnapshot snapshotTask(Task task) {
    TaskSnapshot snapshotTask(Task task) {
        return snapshotTask(task, SNAPSHOT_SCALE_AUTO, PixelFormat.UNKNOWN);
        return snapshotTask(task, PixelFormat.UNKNOWN);
    }
    }


    @Nullable
    @Nullable
    TaskSnapshot snapshotTask(Task task, float scaleFraction, int pixelFormat) {
    TaskSnapshot snapshotTask(Task task, int pixelFormat) {
        TaskSnapshot.Builder builder = new TaskSnapshot.Builder();
        TaskSnapshot.Builder builder = new TaskSnapshot.Builder();


        if (!prepareTaskSnapshot(task, scaleFraction, pixelFormat, builder)) {
        if (!prepareTaskSnapshot(task, pixelFormat, builder)) {
            // Failed some pre-req. Has been logged.
            // Failed some pre-req. Has been logged.
            return null;
            return null;
        }
        }


        final SurfaceControl.ScreenshotGraphicBuffer screenshotBuffer =
        final SurfaceControl.ScreenshotGraphicBuffer screenshotBuffer =
                createTaskSnapshot(task, builder.getScaleFraction(),
                createTaskSnapshot(task, builder);
                builder.getPixelFormat());


        if (screenshotBuffer == null) {
        if (screenshotBuffer == null) {
            // Failed to acquire image. Has been logged.
            // Failed to acquire image. Has been logged.
@@ -472,8 +461,10 @@ class TaskSnapshotController {
        final SystemBarBackgroundPainter decorPainter = new SystemBarBackgroundPainter(attrs.flags,
        final SystemBarBackgroundPainter decorPainter = new SystemBarBackgroundPainter(attrs.flags,
                attrs.privateFlags, attrs.systemUiVisibility, task.getTaskDescription(),
                attrs.privateFlags, attrs.systemUiVisibility, task.getTaskDescription(),
                mHighResTaskSnapshotScale, mainWindow.getRequestedInsetsState());
                mHighResTaskSnapshotScale, mainWindow.getRequestedInsetsState());
        final int width = (int) (task.getBounds().width() * mHighResTaskSnapshotScale);
        final int taskWidth = task.getBounds().width();
        final int height = (int) (task.getBounds().height() * mHighResTaskSnapshotScale);
        final int taskHeight = task.getBounds().height();
        final int width = (int) (taskWidth * mHighResTaskSnapshotScale);
        final int height = (int) (taskHeight * mHighResTaskSnapshotScale);


        final RenderNode node = RenderNode.create("TaskSnapshotController", null);
        final RenderNode node = RenderNode.create("TaskSnapshotController", null);
        node.setLeftTopRightBottom(0, 0, width, height);
        node.setLeftTopRightBottom(0, 0, width, height);
@@ -494,9 +485,9 @@ class TaskSnapshotController {
                System.currentTimeMillis() /* id */,
                System.currentTimeMillis() /* id */,
                topChild.mActivityComponent, hwBitmap.createGraphicBufferHandle(),
                topChild.mActivityComponent, hwBitmap.createGraphicBufferHandle(),
                hwBitmap.getColorSpace(), mainWindow.getConfiguration().orientation,
                hwBitmap.getColorSpace(), mainWindow.getConfiguration().orientation,
                mainWindow.getWindowConfiguration().getRotation(),
                mainWindow.getWindowConfiguration().getRotation(), new Point(taskWidth, taskHeight),
                getInsets(mainWindow), ActivityManager.isLowRamDeviceStatic() /* isLowResolution */,
                getInsets(mainWindow), false /* isLowResolution */,
                mHighResTaskSnapshotScale, false /* isRealSnapshot */, task.getWindowingMode(),
                false /* isRealSnapshot */, task.getWindowingMode(),
                getSystemUiVisibility(task), false);
                getSystemUiVisibility(task), false);
    }
    }


Loading