diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index 1f7ef5014d365..bf8fabd326dbd 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -17,15 +17,13 @@ package com.android.server.wm; import static android.app.ActivityManager.ENABLE_TASK_SNAPSHOTS; -import static android.graphics.Bitmap.Config.ARGB_8888; -import static android.graphics.Bitmap.Config.HARDWARE; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.ActivityManager.StackId; import android.app.ActivityManager.TaskSnapshot; +import android.content.pm.PackageManager; import android.graphics.Bitmap; -import android.graphics.Canvas; import android.graphics.GraphicBuffer; import android.graphics.Rect; import android.os.Environment; @@ -89,9 +87,16 @@ class TaskSnapshotController { private final ArraySet mTmpTasks = new ArraySet<>(); private final Handler mHandler = new Handler(); + /** + * Flag indicating whether we are running on an Android TV device. + */ + private final boolean mIsRunningOnTv; + TaskSnapshotController(WindowManagerService service) { mService = service; mCache = new TaskSnapshotCache(mService, mLoader); + mIsRunningOnTv = mService.mContext.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_LEANBACK); } void systemReady() { @@ -112,7 +117,7 @@ class TaskSnapshotController { } private void handleClosingApps(ArraySet closingApps) { - if (!ENABLE_TASK_SNAPSHOTS || ActivityManager.isLowRamDeviceStatic()) { + if (shouldDisableSnapshots()) { return; } @@ -188,6 +193,10 @@ class TaskSnapshotController { 1f /* scale */); } + private boolean shouldDisableSnapshots() { + return !ENABLE_TASK_SNAPSHOTS || ActivityManager.isLowRamDeviceStatic() || mIsRunningOnTv; + } + private Rect minRect(Rect rect1, Rect rect2) { return new Rect(Math.min(rect1.left, rect2.left), Math.min(rect1.top, rect2.top), @@ -301,7 +310,7 @@ class TaskSnapshotController { * Called when screen is being turned off. */ void screenTurningOff(ScreenOffListener listener) { - if (!ENABLE_TASK_SNAPSHOTS || ActivityManager.isLowRamDeviceStatic()) { + if (shouldDisableSnapshots()) { listener.onScreenOff(); return; } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 6fd153e135517..4b066c0cad6e4 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -601,7 +601,7 @@ public class WindowManagerService extends IWindowManager.Stub final UnknownAppVisibilityController mUnknownAppVisibilityController = new UnknownAppVisibilityController(this); - final TaskSnapshotController mTaskSnapshotController = new TaskSnapshotController(this); + final TaskSnapshotController mTaskSnapshotController; boolean mIsTouchDevice; @@ -992,6 +992,7 @@ public class WindowManagerService extends IWindowManager.Stub mWindowPlacerLocked = new WindowSurfacePlacer(this); mPolicy = policy; + mTaskSnapshotController = new TaskSnapshotController(this); LocalServices.addService(WindowManagerPolicy.class, mPolicy);