Merge "Disabled task snapshot for TV" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-06-06 21:56:16 +00:00
committed by Android (Google) Code Review
2 changed files with 16 additions and 6 deletions

View File

@@ -17,15 +17,13 @@
package com.android.server.wm; package com.android.server.wm;
import static android.app.ActivityManager.ENABLE_TASK_SNAPSHOTS; 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.annotation.Nullable;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.ActivityManager.StackId; import android.app.ActivityManager.StackId;
import android.app.ActivityManager.TaskSnapshot; import android.app.ActivityManager.TaskSnapshot;
import android.content.pm.PackageManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.GraphicBuffer; import android.graphics.GraphicBuffer;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Environment; import android.os.Environment;
@@ -89,9 +87,16 @@ class TaskSnapshotController {
private final ArraySet<Task> mTmpTasks = new ArraySet<>(); private final ArraySet<Task> mTmpTasks = new ArraySet<>();
private final Handler mHandler = new Handler(); private final Handler mHandler = new Handler();
/**
* Flag indicating whether we are running on an Android TV device.
*/
private final boolean mIsRunningOnTv;
TaskSnapshotController(WindowManagerService service) { TaskSnapshotController(WindowManagerService service) {
mService = service; mService = service;
mCache = new TaskSnapshotCache(mService, mLoader); mCache = new TaskSnapshotCache(mService, mLoader);
mIsRunningOnTv = mService.mContext.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_LEANBACK);
} }
void systemReady() { void systemReady() {
@@ -112,7 +117,7 @@ class TaskSnapshotController {
} }
private void handleClosingApps(ArraySet<AppWindowToken> closingApps) { private void handleClosingApps(ArraySet<AppWindowToken> closingApps) {
if (!ENABLE_TASK_SNAPSHOTS || ActivityManager.isLowRamDeviceStatic()) { if (shouldDisableSnapshots()) {
return; return;
} }
@@ -188,6 +193,10 @@ class TaskSnapshotController {
1f /* scale */); 1f /* scale */);
} }
private boolean shouldDisableSnapshots() {
return !ENABLE_TASK_SNAPSHOTS || ActivityManager.isLowRamDeviceStatic() || mIsRunningOnTv;
}
private Rect minRect(Rect rect1, Rect rect2) { private Rect minRect(Rect rect1, Rect rect2) {
return new Rect(Math.min(rect1.left, rect2.left), return new Rect(Math.min(rect1.left, rect2.left),
Math.min(rect1.top, rect2.top), Math.min(rect1.top, rect2.top),
@@ -301,7 +310,7 @@ class TaskSnapshotController {
* Called when screen is being turned off. * Called when screen is being turned off.
*/ */
void screenTurningOff(ScreenOffListener listener) { void screenTurningOff(ScreenOffListener listener) {
if (!ENABLE_TASK_SNAPSHOTS || ActivityManager.isLowRamDeviceStatic()) { if (shouldDisableSnapshots()) {
listener.onScreenOff(); listener.onScreenOff();
return; return;
} }

View File

@@ -601,7 +601,7 @@ public class WindowManagerService extends IWindowManager.Stub
final UnknownAppVisibilityController mUnknownAppVisibilityController = final UnknownAppVisibilityController mUnknownAppVisibilityController =
new UnknownAppVisibilityController(this); new UnknownAppVisibilityController(this);
final TaskSnapshotController mTaskSnapshotController = new TaskSnapshotController(this); final TaskSnapshotController mTaskSnapshotController;
boolean mIsTouchDevice; boolean mIsTouchDevice;
@@ -992,6 +992,7 @@ public class WindowManagerService extends IWindowManager.Stub
mWindowPlacerLocked = new WindowSurfacePlacer(this); mWindowPlacerLocked = new WindowSurfacePlacer(this);
mPolicy = policy; mPolicy = policy;
mTaskSnapshotController = new TaskSnapshotController(this);
LocalServices.addService(WindowManagerPolicy.class, mPolicy); LocalServices.addService(WindowManagerPolicy.class, mPolicy);