Rename full and reduced scale configs
Rename:
config_fullTaskSnapshotScale -> config_highResTaskSnapshotScale
config_reducedTaskSnapshotScale -> config_lowResTaskSnapshotScale
Both full and reduced scale can be "reduced" from 100%, so name them
more clearly.
Test: TaskSnapshotCacheTest
Test: TaskSnapshotControllerTest
Test: TaskSnapshotPersisterLoaderTest
Test: TaskSnapshotSurfaceTest
Bug: 148617404
Bug: 142063079
Change-Id: Ie8073d5a3048c19450308b2af22d363deaa51b6a
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 4cc4851..49739f5 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1714,7 +1714,7 @@
final ActivityManager.TaskSnapshot snapshot =
mWmService.mTaskSnapshotController.getSnapshot(task.mTaskId, task.mUserId,
- false /* restoreFromDisk */, false /* reducedResolution */);
+ false /* restoreFromDisk */, false /* isLowResolution */);
final int type = getStartingWindowType(newTask, taskSwitch, processRunning,
allowTaskSnapshot, activityCreated, fromRecents, snapshot);
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index 6522294..510072d 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -551,7 +551,7 @@
* Gets bitmap snapshot of the provided task id.
*/
public abstract ActivityManager.TaskSnapshot getTaskSnapshotNoRestore(int taskId,
- boolean reducedResolution);
+ boolean isLowResolution);
/** Returns true if uid is considered foreground for activity start purposes. */
public abstract boolean isUidForeground(int uid);
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 132e486..0b50aa2 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -4526,17 +4526,17 @@
}
@Override
- public ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean reducedResolution) {
+ public ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution) {
enforceCallerIsRecentsOrHasPermission(READ_FRAME_BUFFER, "getTaskSnapshot()");
final long ident = Binder.clearCallingIdentity();
try {
- return getTaskSnapshot(taskId, reducedResolution, true /* restoreFromDisk */);
+ return getTaskSnapshot(taskId, isLowResolution, true /* restoreFromDisk */);
} finally {
Binder.restoreCallingIdentity(ident);
}
}
- private ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean reducedResolution,
+ private ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution,
boolean restoreFromDisk) {
final Task task;
synchronized (mGlobalLock) {
@@ -4548,7 +4548,7 @@
}
}
// Don't call this while holding the lock as this operation might hit the disk.
- return task.getSnapshot(reducedResolution, restoreFromDisk);
+ return task.getSnapshot(isLowResolution, restoreFromDisk);
}
@Override
@@ -7491,8 +7491,8 @@
@Override
public ActivityManager.TaskSnapshot getTaskSnapshotNoRestore(int taskId,
- boolean reducedResolution) {
- return ActivityTaskManagerService.this.getTaskSnapshot(taskId, reducedResolution,
+ boolean isLowResolution) {
+ return ActivityTaskManagerService.this.getTaskSnapshot(taskId, isLowResolution,
false /* restoreFromDisk */);
}
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index 251d0f1..297e3bb 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -204,7 +204,7 @@
snapshotController.snapshotTasks(tasks);
snapshotController.addSkipClosingAppSnapshotTasks(tasks);
return snapshotController.getSnapshot(taskId, 0 /* userId */,
- false /* restoreFromDisk */, false /* reducedResolution */);
+ false /* restoreFromDisk */, false /* isLowResolution */);
}
}
return null;
@@ -633,7 +633,7 @@
snapshotController.snapshotTasks(tasks);
snapshotController.addSkipClosingAppSnapshotTasks(tasks);
final TaskSnapshot taskSnapshot = snapshotController.getSnapshot(task.mTaskId,
- task.mUserId, false /* restoreFromDisk */, false /* reducedResolution */);
+ task.mUserId, false /* restoreFromDisk */, false /* isLowResolution */);
if (taskSnapshot == null) {
return null;
}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 34b5c11..f6e52c2 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -885,11 +885,11 @@
/**
* DO NOT HOLD THE ACTIVITY MANAGER LOCK WHEN CALLING THIS METHOD!
*/
- TaskSnapshot getSnapshot(boolean reducedResolution, boolean restoreFromDisk) {
+ TaskSnapshot getSnapshot(boolean isLowResolution, boolean restoreFromDisk) {
// TODO: Move this to {@link TaskWindowContainerController} once recent tasks are more
// synchronized between AM and WM.
- return mAtmService.mWindowManager.getTaskSnapshot(mTaskId, mUserId, reducedResolution,
+ return mAtmService.mWindowManager.getTaskSnapshot(mTaskId, mUserId, isLowResolution,
restoreFromDisk);
}
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotCache.java b/services/core/java/com/android/server/wm/TaskSnapshotCache.java
index 7b0d841..0edfaa8 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotCache.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotCache.java
@@ -57,7 +57,7 @@
* If {@param restoreFromDisk} equals {@code true}, DO NOT HOLD THE WINDOW MANAGER LOCK!
*/
@Nullable TaskSnapshot getSnapshot(int taskId, int userId, boolean restoreFromDisk,
- boolean reducedResolution) {
+ boolean isLowResolution) {
synchronized (mService.mGlobalLock) {
// Try the running cache.
@@ -71,14 +71,14 @@
if (!restoreFromDisk) {
return null;
}
- return tryRestoreFromDisk(taskId, userId, reducedResolution);
+ return tryRestoreFromDisk(taskId, userId, isLowResolution);
}
/**
* DO NOT HOLD THE WINDOW MANAGER LOCK WHEN CALLING THIS METHOD!
*/
- private TaskSnapshot tryRestoreFromDisk(int taskId, int userId, boolean reducedResolution) {
- final TaskSnapshot snapshot = mLoader.loadTask(taskId, userId, reducedResolution);
+ private TaskSnapshot tryRestoreFromDisk(int taskId, int userId, boolean isLowResolution) {
+ final TaskSnapshot snapshot = mLoader.loadTask(taskId, userId, isLowResolution);
if (snapshot == null) {
return null;
}
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index d8091ed..5c73f92 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -18,7 +18,7 @@
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
-import static com.android.server.wm.TaskSnapshotPersister.DISABLE_FULL_SIZED_BITMAPS;
+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.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
@@ -105,7 +105,7 @@
private final ArraySet<Task> mSkipClosingAppSnapshotTasks = new ArraySet<>();
private final ArraySet<Task> mTmpTasks = new ArraySet<>();
private final Handler mHandler = new Handler();
- private final float mFullSnapshotScale;
+ private final float mHighResTaskSnapshotScale;
private final Rect mTmpRect = new Rect();
@@ -135,8 +135,8 @@
PackageManager.FEATURE_EMBEDDED);
mIsRunningOnWear = mService.mContext.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_WATCH);
- mFullSnapshotScale = mService.mContext.getResources().getFloat(
- com.android.internal.R.dimen.config_fullTaskSnapshotScale);
+ mHighResTaskSnapshotScale = mService.mContext.getResources().getFloat(
+ com.android.internal.R.dimen.config_highResTaskSnapshotScale);
}
void systemReady() {
@@ -223,13 +223,13 @@
}
/**
- * Retrieves a snapshot. If {@param restoreFromDisk} equals {@code true}, DO HOLD THE WINDOW
+ * Retrieves a snapshot. If {@param restoreFromDisk} equals {@code true}, DO NOT HOLD THE WINDOW
* MANAGER LOCK WHEN CALLING THIS METHOD!
*/
@Nullable TaskSnapshot getSnapshot(int taskId, int userId, boolean restoreFromDisk,
- boolean reducedResolution) {
- return mCache.getSnapshot(taskId, userId, restoreFromDisk, reducedResolution
- || DISABLE_FULL_SIZED_BITMAPS);
+ boolean isLowResolution) {
+ return mCache.getSnapshot(taskId, userId, restoreFromDisk, isLowResolution
+ || DISABLE_HIGH_RES_BITMAPS);
}
/**
@@ -318,12 +318,12 @@
if (scaleFraction == SNAPSHOT_SCALE_AUTO) {
builder.setScaleFraction(isLowRamDevice
- ? mPersister.getReducedScale()
- : mFullSnapshotScale);
- builder.setReducedResolution(isLowRamDevice);
+ ? mPersister.getLowResScale()
+ : mHighResTaskSnapshotScale);
+ builder.setIsLowResolution(isLowRamDevice);
} else {
builder.setScaleFraction(scaleFraction);
- builder.setReducedResolution(scaleFraction < 1.0f);
+ builder.setIsLowResolution(scaleFraction < 1.0f);
}
final boolean isWindowTranslucent = mainWindow.getAttrs().format != PixelFormat.OPAQUE;
@@ -471,9 +471,9 @@
final LayoutParams attrs = mainWindow.getAttrs();
final SystemBarBackgroundPainter decorPainter = new SystemBarBackgroundPainter(attrs.flags,
attrs.privateFlags, attrs.systemUiVisibility, task.getTaskDescription(),
- mFullSnapshotScale, mainWindow.getRequestedInsetsState());
- final int width = (int) (task.getBounds().width() * mFullSnapshotScale);
- final int height = (int) (task.getBounds().height() * mFullSnapshotScale);
+ mHighResTaskSnapshotScale, mainWindow.getRequestedInsetsState());
+ final int width = (int) (task.getBounds().width() * mHighResTaskSnapshotScale);
+ final int height = (int) (task.getBounds().height() * mHighResTaskSnapshotScale);
final RenderNode node = RenderNode.create("TaskSnapshotController", null);
node.setLeftTopRightBottom(0, 0, width, height);
@@ -495,8 +495,8 @@
topChild.mActivityComponent, hwBitmap.createGraphicBufferHandle(),
hwBitmap.getColorSpace(), mainWindow.getConfiguration().orientation,
mainWindow.getWindowConfiguration().getRotation(),
- getInsets(mainWindow), ActivityManager.isLowRamDeviceStatic() /* reduced */,
- mFullSnapshotScale, false /* isRealSnapshot */, task.getWindowingMode(),
+ getInsets(mainWindow), ActivityManager.isLowRamDeviceStatic() /* isLowResolution */,
+ mHighResTaskSnapshotScale, false /* isRealSnapshot */, task.getWindowingMode(),
getSystemUiVisibility(task), false);
}
@@ -586,7 +586,7 @@
}
void dump(PrintWriter pw, String prefix) {
- pw.println(prefix + "mFullSnapshotScale=" + mFullSnapshotScale);
+ pw.println(prefix + "mHighResTaskSnapshotScale=" + mHighResTaskSnapshotScale);
mCache.dump(pw, prefix);
}
}
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotLoader.java b/services/core/java/com/android/server/wm/TaskSnapshotLoader.java
index 6e9986f..01f3427 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotLoader.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotLoader.java
@@ -60,14 +60,14 @@
*
* @param taskId The id of the task to load.
* @param userId The id of the user the task belonged to.
- * @param reducedResolution Whether to load a reduced resolution version of the snapshot.
+ * @param isLowResolution Whether to load a reduced resolution version of the snapshot.
* @return The loaded {@link TaskSnapshot} or {@code null} if it couldn't be loaded.
*/
- TaskSnapshot loadTask(int taskId, int userId, boolean reducedResolution) {
+ TaskSnapshot loadTask(int taskId, int userId, boolean isLowResolution) {
final File protoFile = mPersister.getProtoFile(taskId, userId);
- final File bitmapFile = reducedResolution
- ? mPersister.getReducedResolutionBitmapFile(taskId, userId)
- : mPersister.getBitmapFile(taskId, userId);
+ final File bitmapFile = isLowResolution
+ ? mPersister.getLowResolutionBitmapFile(taskId, userId)
+ : mPersister.getHighResolutionBitmapFile(taskId, userId);
if (bitmapFile == null || !protoFile.exists() || !bitmapFile.exists()) {
return null;
}
@@ -100,12 +100,12 @@
final ComponentName topActivityComponent = ComponentName.unflattenFromString(
proto.topActivityComponent);
// For legacy snapshots, restore the scale based on the reduced resolution state
- final float legacyScale = reducedResolution ? mPersister.getReducedScale() : 1f;
+ final float legacyScale = isLowResolution ? mPersister.getLowResScale() : 1f;
final float scale = Float.compare(proto.scale, 0f) != 0 ? proto.scale : legacyScale;
return new TaskSnapshot(proto.id, topActivityComponent, buffer, hwBitmap.getColorSpace(),
proto.orientation, proto.rotation,
new Rect(proto.insetLeft, proto.insetTop, proto.insetRight, proto.insetBottom),
- reducedResolution, scale, proto.isRealSnapshot, proto.windowingMode,
+ isLowResolution, scale, proto.isRealSnapshot, proto.windowingMode,
proto.systemUiVisibility, proto.isTranslucent);
} catch (IOException e) {
Slog.w(TAG, "Unable to load task snapshot data for taskId=" + taskId);
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
index ee5098b..31212b8 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
@@ -51,9 +51,9 @@
private static final String TAG = TAG_WITH_CLASS_NAME ? "TaskSnapshotPersister" : TAG_WM;
private static final String SNAPSHOTS_DIRNAME = "snapshots";
- private static final String REDUCED_POSTFIX = "_reduced";
+ private static final String LOW_RES_FILE_POSTFIX = "_reduced";
private static final float LOW_RAM_REDUCED_SCALE = .8f;
- static final boolean DISABLE_FULL_SIZED_BITMAPS = ActivityManager.isLowRamDeviceStatic();
+ static final boolean DISABLE_HIGH_RES_BITMAPS = ActivityManager.isLowRamDeviceStatic();
private static final long DELAY_MS = 100;
private static final int QUALITY = 95;
private static final String PROTO_EXTENSION = ".proto";
@@ -71,7 +71,7 @@
private boolean mStarted;
private final Object mLock = new Object();
private final DirectoryResolver mDirectoryResolver;
- private final float mReducedScale;
+ private final float mLowResScale;
private final boolean mUse16BitFormat;
/**
@@ -85,10 +85,10 @@
mDirectoryResolver = resolver;
if (ActivityManager.isLowRamDeviceStatic()) {
- mReducedScale = LOW_RAM_REDUCED_SCALE;
+ mLowResScale = LOW_RAM_REDUCED_SCALE;
} else {
- mReducedScale = service.mContext.getResources().getFloat(
- com.android.internal.R.dimen.config_reducedTaskSnapshotScale);
+ mLowResScale = service.mContext.getResources().getFloat(
+ com.android.internal.R.dimen.config_lowResTaskSnapshotScale);
}
mUse16BitFormat = service.mContext.getResources().getBoolean(
com.android.internal.R.bool.config_use16BitTaskSnapshotPixelFormat);
@@ -158,10 +158,10 @@
/**
* Gets the scaling the persister uses for low resolution task snapshots.
*
- * @return the reduced scale of task snapshots when they are set to be low res
+ * @return the lowResBitmap scale of task snapshots when they are set to be low res
*/
- float getReducedScale() {
- return mReducedScale;
+ float getLowResScale() {
+ return mLowResScale;
}
/**
@@ -212,17 +212,17 @@
return new File(getDirectory(userId), taskId + PROTO_EXTENSION);
}
- File getBitmapFile(int taskId, int userId) {
+ File getHighResolutionBitmapFile(int taskId, int userId) {
// Full sized bitmaps are disabled on low ram devices
- if (DISABLE_FULL_SIZED_BITMAPS) {
+ if (DISABLE_HIGH_RES_BITMAPS) {
Slog.wtf(TAG, "This device does not support full sized resolution bitmaps.");
return null;
}
return new File(getDirectory(userId), taskId + BITMAP_EXTENSION);
}
- File getReducedResolutionBitmapFile(int taskId, int userId) {
- return new File(getDirectory(userId), taskId + REDUCED_POSTFIX + BITMAP_EXTENSION);
+ File getLowResolutionBitmapFile(int taskId, int userId) {
+ return new File(getDirectory(userId), taskId + LOW_RES_FILE_POSTFIX + BITMAP_EXTENSION);
}
private boolean createDirectory(int userId) {
@@ -232,13 +232,13 @@
private void deleteSnapshot(int taskId, int userId) {
final File protoFile = getProtoFile(taskId, userId);
- final File bitmapReducedFile = getReducedResolutionBitmapFile(taskId, userId);
+ final File bitmapLowResFile = getLowResolutionBitmapFile(taskId, userId);
protoFile.delete();
- bitmapReducedFile.delete();
+ bitmapLowResFile.delete();
// Low ram devices do not have a full sized file to delete
- if (!DISABLE_FULL_SIZED_BITMAPS) {
- final File bitmapFile = getBitmapFile(taskId, userId);
+ if (!DISABLE_HIGH_RES_BITMAPS) {
+ final File bitmapFile = getHighResolutionBitmapFile(taskId, userId);
bitmapFile.delete();
}
}
@@ -379,30 +379,30 @@
}
final Bitmap swBitmap = bitmap.copy(Config.ARGB_8888, false /* isMutable */);
- final Bitmap reduced = mSnapshot.isReducedResolution()
+ final Bitmap lowResBitmap = mSnapshot.isLowResolution()
? swBitmap
: Bitmap.createScaledBitmap(swBitmap,
- (int) (bitmap.getWidth() * mReducedScale),
- (int) (bitmap.getHeight() * mReducedScale), true /* filter */);
+ (int) (bitmap.getWidth() * mLowResScale),
+ (int) (bitmap.getHeight() * mLowResScale), true /* filter */);
- final File reducedFile = getReducedResolutionBitmapFile(mTaskId, mUserId);
+ final File lowResFile = getLowResolutionBitmapFile(mTaskId, mUserId);
try {
- FileOutputStream reducedFos = new FileOutputStream(reducedFile);
- reduced.compress(JPEG, QUALITY, reducedFos);
- reducedFos.close();
+ FileOutputStream lowResFos = new FileOutputStream(lowResFile);
+ lowResBitmap.compress(JPEG, QUALITY, lowResFos);
+ lowResFos.close();
} catch (IOException e) {
- Slog.e(TAG, "Unable to open " + reducedFile +" for persisting.", e);
+ Slog.e(TAG, "Unable to open " + lowResFile + " for persisting.", e);
return false;
}
- reduced.recycle();
+ lowResBitmap.recycle();
- // For snapshots with reduced resolution, do not create or save full sized bitmaps
- if (mSnapshot.isReducedResolution()) {
+ // For snapshots with lowResBitmap resolution, do not create or save full sized bitmaps
+ if (mSnapshot.isLowResolution()) {
swBitmap.recycle();
return true;
}
- final File file = getBitmapFile(mTaskId, mUserId);
+ final File file = getHighResolutionBitmapFile(mTaskId, mUserId);
try {
FileOutputStream fos = new FileOutputStream(file);
swBitmap.compress(JPEG, QUALITY, fos);
@@ -475,8 +475,8 @@
return -1;
}
String name = fileName.substring(0, end);
- if (name.endsWith(REDUCED_POSTFIX)) {
- name = name.substring(0, name.length() - REDUCED_POSTFIX.length());
+ if (name.endsWith(LOW_RES_FILE_POSTFIX)) {
+ name = name.substring(0, name.length() - LOW_RES_FILE_POSTFIX.length());
}
try {
return Integer.parseInt(name);
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 2a7d551..ec642a1 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -3638,10 +3638,14 @@
return true;
}
- public TaskSnapshot getTaskSnapshot(int taskId, int userId, boolean reducedResolution,
+ /**
+ * Retrieves a snapshot. If restoreFromDisk equals equals {@code true}, DO NOT HOLD THE WINDOW
+ * MANAGER LOCK WHEN CALLING THIS METHOD!
+ */
+ public TaskSnapshot getTaskSnapshot(int taskId, int userId, boolean isLowResolution,
boolean restoreFromDisk) {
return mTaskSnapshotController.getSnapshot(taskId, userId, restoreFromDisk,
- reducedResolution);
+ isLowResolution);
}
/**