Merge "Apply stack dim layer to entire screen for system windows."
This commit is contained in:
committed by
Android (Google) Code Review
commit
b1193ade25
@@ -244,20 +244,19 @@ class DisplayContent {
|
||||
mTapDetector.setTouchExcludeRegion(mTouchExcludeRegion);
|
||||
}
|
||||
|
||||
void switchUserStacks(int newUserId) {
|
||||
void switchUserStacks() {
|
||||
final WindowList windows = getWindowList();
|
||||
for (int i = 0; i < windows.size(); i++) {
|
||||
final WindowState win = windows.get(i);
|
||||
if (win.isHiddenFromUserLocked()) {
|
||||
if (DEBUG_VISIBILITY) Slog.w(TAG, "user changing " + newUserId + " hiding "
|
||||
+ win + ", attrs=" + win.mAttrs.type + ", belonging to "
|
||||
+ win.mOwnerUid);
|
||||
if (DEBUG_VISIBILITY) Slog.w(TAG, "user changing, hiding " + win
|
||||
+ ", attrs=" + win.mAttrs.type + ", belonging to " + win.mOwnerUid);
|
||||
win.hideLw(false);
|
||||
}
|
||||
}
|
||||
|
||||
for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
|
||||
mStacks.get(stackNdx).switchUser(newUserId);
|
||||
mStacks.get(stackNdx).switchUser();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -463,18 +463,24 @@ public class TaskStack {
|
||||
|
||||
void startDimmingIfNeeded(WindowStateAnimator newWinAnimator) {
|
||||
// Only set dim params on the highest dimmed layer.
|
||||
final WindowStateAnimator existingDimWinAnimator = mDimWinAnimator;
|
||||
// Don't turn on for an unshown surface, or for any layer but the highest dimmed layer.
|
||||
if (newWinAnimator.mSurfaceShown && (existingDimWinAnimator == null
|
||||
|| !existingDimWinAnimator.mSurfaceShown
|
||||
|| existingDimWinAnimator.mAnimLayer < newWinAnimator.mAnimLayer)) {
|
||||
if (newWinAnimator.mSurfaceShown && (mDimWinAnimator == null
|
||||
|| !mDimWinAnimator.mSurfaceShown
|
||||
|| mDimWinAnimator.mAnimLayer < newWinAnimator.mAnimLayer)) {
|
||||
mDimWinAnimator = newWinAnimator;
|
||||
if (mDimWinAnimator.mWin.mAppToken == null
|
||||
&& !mFullscreen && mDisplayContent != null) {
|
||||
// Dim should cover the entire screen for system windows.
|
||||
mDisplayContent.getLogicalDisplayRect(mTmpRect);
|
||||
mDimLayer.setBounds(mTmpRect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void stopDimmingIfNeeded() {
|
||||
if (!mDimmingTag && isDimming()) {
|
||||
mDimWinAnimator = null;
|
||||
mDimLayer.setBounds(mBounds);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -489,7 +495,7 @@ public class TaskStack {
|
||||
}
|
||||
}
|
||||
|
||||
void switchUser(int userId) {
|
||||
void switchUser() {
|
||||
int top = mTasks.size();
|
||||
for (int taskNdx = 0; taskNdx < top; ++taskNdx) {
|
||||
Task task = mTasks.get(taskNdx);
|
||||
@@ -518,7 +524,7 @@ public class TaskStack {
|
||||
}
|
||||
if (mDimLayer.isDimming()) {
|
||||
pw.print(prefix); pw.println("mDimLayer:");
|
||||
mDimLayer.printTo(prefix, pw);
|
||||
mDimLayer.printTo(prefix + " ", pw);
|
||||
pw.print(prefix); pw.print("mDimWinAnimator="); pw.println(mDimWinAnimator);
|
||||
}
|
||||
if (!mExitingAppTokens.isEmpty()) {
|
||||
|
||||
@@ -5489,7 +5489,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
final int numDisplays = mDisplayContents.size();
|
||||
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
|
||||
final DisplayContent displayContent = mDisplayContents.valueAt(displayNdx);
|
||||
displayContent.switchUserStacks(newUserId);
|
||||
displayContent.switchUserStacks();
|
||||
rebuildAppWindowListLocked(displayContent);
|
||||
}
|
||||
performLayoutAndPlaceSurfacesLocked();
|
||||
|
||||
Reference in New Issue
Block a user