Internal cleanup of window manager
- Remove unnecessary wrapper methods which were used
for cross package access.
- WindowContainer is associated with display, it doesn't
need to lookup again by WindowAnimator to update
pendingLayoutChanges of DisplayContent.
- Remove unused methods and fields.
- Correct some locks in ActivityTaskManagerService.
Fix: 141248611
Test: go/wm-smoke
Change-Id: I5d5dbc9036f6edbfdf87fe5fb7883793def8836e
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index 5f98d1d..59f051b 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -1106,14 +1106,10 @@
private final Point mTempPoint = new Point();
- private final Rect mTempRect = new Rect();
-
private final Region mTempRegion = new Region();
private final Region mTempRegion1 = new Region();
- private final Context mContext;
-
private final WindowManagerService mService;
private final Handler mHandler;
@@ -1127,7 +1123,6 @@
public WindowsForAccessibilityObserver(WindowManagerService windowManagerService,
int displayId,
WindowsForAccessibilityCallback callback) {
- mContext = windowManagerService.mContext;
mService = windowManagerService;
mCallback = callback;
mDisplayId = displayId;
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 7a66731..c54ccd4 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -2202,7 +2202,9 @@
stack.removeTimeoutsForActivity(this);
// Clean-up activities are no longer relaunching (e.g. app process died). Notify window
// manager so it can update its bookkeeping.
- mAtmService.mWindowManager.notifyAppRelaunchesCleared(appToken);
+ if (mAppWindowToken != null) {
+ mAppWindowToken.clearRelaunching();
+ }
}
/**
@@ -2961,6 +2963,11 @@
if (display != null) {
display.handleActivitySizeCompatModeIfNeeded(r);
}
+
+ if (r.mAppWindowToken != null) {
+ r.mAppWindowToken.getDisplayContent().mUnknownAppVisibilityController
+ .notifyAppResumedFinished(r.mAppWindowToken);
+ }
}
/**
@@ -4311,7 +4318,9 @@
"Moving to " + (andResume ? "RESUMED" : "PAUSED") + " Relaunching " + this
+ " callers=" + Debug.getCallers(6));
forceNewConfig = false;
- mStackSupervisor.activityRelaunchingLocked(this);
+ if (mAppWindowToken != null) {
+ mAppWindowToken.startRelaunching();
+ }
final ClientTransactionItem callbackItem = ActivityRelaunchItem.obtain(pendingResults,
pendingNewIntents, configChangeFlags,
new MergedConfiguration(mAtmService.getGlobalConfiguration(),
diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
index 1aa1d48..d151f86 100644
--- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
@@ -2480,19 +2480,17 @@
}
void activityRelaunchedLocked(IBinder token) {
- mWindowManager.notifyAppRelaunchingFinished(token);
final ActivityRecord r = ActivityRecord.isInStackLocked(token);
if (r != null) {
+ if (r.mAppWindowToken != null) {
+ r.mAppWindowToken.finishRelaunching();
+ }
if (r.getActivityStack().shouldSleepOrShutDownActivities()) {
r.setSleeping(true, true);
}
}
}
- void activityRelaunchingLocked(ActivityRecord r) {
- mWindowManager.notifyAppRelaunching(r.appToken);
- }
-
void logStackState() {
mActivityMetricsLogger.logWindowState();
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 2f7acba..468a13d 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -47,7 +47,6 @@
import static android.content.pm.PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT;
import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static android.content.res.Configuration.UI_MODE_TYPE_TELEVISION;
import static android.os.FactoryTest.FACTORY_TEST_HIGH_LEVEL;
import static android.os.FactoryTest.FACTORY_TEST_LOW_LEVEL;
import static android.os.FactoryTest.FACTORY_TEST_OFF;
@@ -550,7 +549,6 @@
/** The dimensions of the thumbnails in the Recents UI. */
private int mThumbnailWidth;
private int mThumbnailHeight;
- private float mFullscreenThumbnailScale;
/**
* Flag that indicates if multi-window is enabled.
@@ -790,15 +788,6 @@
com.android.internal.R.dimen.thumbnail_width);
mThumbnailHeight = res.getDimensionPixelSize(
com.android.internal.R.dimen.thumbnail_height);
-
- if ((globalConfig.uiMode & UI_MODE_TYPE_TELEVISION) == UI_MODE_TYPE_TELEVISION) {
- mFullscreenThumbnailScale = (float) res
- .getInteger(com.android.internal.R.integer.thumbnail_width_tv) /
- (float) globalConfig.screenWidthDp;
- } else {
- mFullscreenThumbnailScale = res.getFraction(
- com.android.internal.R.fraction.thumbnail_fullscreen_scale, 1, 1);
- }
}
}
@@ -1697,7 +1686,6 @@
final long origId = Binder.clearCallingIdentity();
synchronized (mGlobalLock) {
ActivityRecord.activityResumedLocked(token);
- mWindowManager.notifyAppResumedFinished(token);
}
Binder.restoreCallingIdentity(origId);
}
@@ -2920,7 +2908,7 @@
mAmInternal.enforceCallingPermission(Manifest.permission.UPDATE_LOCK_TASK_PACKAGES,
"updateLockTaskPackages()");
}
- synchronized (this) {
+ synchronized (mGlobalLock) {
if (DEBUG_LOCKTASK) Slog.w(TAG_LOCKTASK, "Whitelisting " + userId + ":"
+ Arrays.toString(packages));
getLockTaskController().updateLockTaskPackages(userId, packages);
@@ -5365,7 +5353,7 @@
final float scaleFactor = Settings.System.getFloatForUser(mContext.getContentResolver(),
FONT_SCALE, 1.0f, userId);
- synchronized (this) {
+ synchronized (mGlobalLock) {
if (getGlobalConfiguration().fontScale == scaleFactor) {
return;
}
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 557a609..66d52cc 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -1999,8 +1999,8 @@
mNextAppTransitionFutureCallback, null /* finishedCallback */,
mNextAppTransitionScaleUp);
mNextAppTransitionFutureCallback = null;
+ mService.requestTraversal();
}
- mService.requestTraversal();
});
}
}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index f2ad56a..94119e8 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -2167,7 +2167,6 @@
* so only need to configure display.
*/
void setForcedDensity(int density, int userId) {
- final boolean clear = density == mInitialDisplayDensity;
final boolean updateCurrent = userId == UserHandle.USER_CURRENT;
if (mWmService.mCurrentUserId == userId || updateCurrent) {
mBaseDisplayDensity = density;
@@ -3884,21 +3883,6 @@
}
}
- private static final class ScreenshotApplicationState {
- WindowState appWin;
- int maxLayer;
- int minLayer;
- boolean screenshotReady;
-
- void reset(boolean screenshotReady) {
- appWin = null;
- maxLayer = 0;
- minLayer = 0;
- this.screenshotReady = screenshotReady;
- minLayer = (screenshotReady) ? 0 : Integer.MAX_VALUE;
- }
- }
-
/**
* Base class for any direct child window container of {@link #DisplayContent} need to inherit
* from. This is mainly a pass through class that allows {@link #DisplayContent} to have
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java
index 4dbb009..10d48c4 100644
--- a/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -335,7 +335,6 @@
private static final Rect sTmpDisplayCutoutSafeExceptMaybeBarsRect = new Rect();
private static final Rect sTmpRect = new Rect();
- private static final Rect sTmpDockedFrame = new Rect();
private static final Rect sTmpNavFrame = new Rect();
private static final Rect sTmpLastParentFrame = new Rect();
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index 120ce3e..ae3b5f2 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -36,7 +36,6 @@
import static com.android.server.wm.DockedStackDividerControllerProto.MINIMIZED_DOCK;
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.WindowManagerService.LAYER_OFFSET_DIM;
import android.content.Context;
import android.content.res.Configuration;
@@ -141,8 +140,6 @@
float mLastDividerProgress;
private final DividerSnapAlgorithm[] mSnapAlgorithmForRotation = new DividerSnapAlgorithm[4];
private boolean mImeHideRequested;
- private final Rect mLastDimLayerRect = new Rect();
- private float mLastDimLayerAlpha;
private TaskStack mDimmedStack;
DockedStackDividerController(WindowManagerService service, DisplayContent displayContent) {
@@ -656,14 +653,6 @@
}
/**
- * @return The layer used for dimming the apps when dismissing docked/fullscreen stack. Just
- * above all application surfaces.
- */
- private int getResizeDimLayer() {
- return (mWindow != null) ? mWindow.mLayer - 1 : LAYER_OFFSET_DIM;
- }
-
- /**
* Notifies the docked stack divider controller of a visibility change that happens without
* an animation.
*/
diff --git a/services/core/java/com/android/server/wm/DragAndDropPermissionsHandler.java b/services/core/java/com/android/server/wm/DragAndDropPermissionsHandler.java
index 20a1333..c5c2364 100644
--- a/services/core/java/com/android/server/wm/DragAndDropPermissionsHandler.java
+++ b/services/core/java/com/android/server/wm/DragAndDropPermissionsHandler.java
@@ -16,7 +16,6 @@
package com.android.server.wm;
-import android.app.ActivityManager;
import android.app.ActivityTaskManager;
import android.app.UriGrantsManager;
import android.content.ClipData;
diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java
index d528ef6..2b5eb3a 100644
--- a/services/core/java/com/android/server/wm/KeyguardController.java
+++ b/services/core/java/com/android/server/wm/KeyguardController.java
@@ -71,7 +71,6 @@
private boolean mAodShowing;
private boolean mKeyguardGoingAway;
private boolean mDismissalRequested;
- private int[] mSecondaryDisplayIdsShowing;
private int mBeforeUnoccludeTransit;
private int mVisibilityTransactionDepth;
private final SparseArray<KeyguardDisplayState> mDisplayStates = new SparseArray<>();
@@ -328,7 +327,7 @@
return;
}
- mWindowManager.onKeyguardOccludedChanged(isDisplayOccluded(DEFAULT_DISPLAY));
+ mWindowManager.mPolicy.onKeyguardOccludedChangedLw(isDisplayOccluded(DEFAULT_DISPLAY));
if (isKeyguardLocked()) {
mService.deferWindowLayout();
try {
@@ -381,7 +380,7 @@
* @return true if Keyguard can be currently dismissed without entering credentials.
*/
boolean canDismissKeyguard() {
- return mWindowManager.isKeyguardTrusted()
+ return mWindowManager.mPolicy.isKeyguardTrustedLw()
|| !mWindowManager.isKeyguardSecure(mService.getCurrentUserId());
}
@@ -516,7 +515,8 @@
}
// TODO(b/123372519): isShowingDream can only works on default display.
if (mDisplayId == DEFAULT_DISPLAY) {
- mOccluded |= controller.mWindowManager.isShowingDream();
+ mOccluded |= mService.mRootActivityContainer.getDefaultDisplay().mDisplayContent
+ .getDisplayPolicy().isShowingDreamLw();
}
if (lastOccluded != mOccluded) {
diff --git a/services/core/java/com/android/server/wm/PointerEventDispatcher.java b/services/core/java/com/android/server/wm/PointerEventDispatcher.java
index 8d08aa3..6b8144c 100644
--- a/services/core/java/com/android/server/wm/PointerEventDispatcher.java
+++ b/services/core/java/com/android/server/wm/PointerEventDispatcher.java
@@ -28,13 +28,11 @@
import java.util.ArrayList;
public class PointerEventDispatcher extends InputEventReceiver {
- private final InputChannel mInputChannel;
private final ArrayList<PointerEventListener> mListeners = new ArrayList<>();
private PointerEventListener[] mListenersArray = new PointerEventListener[0];
public PointerEventDispatcher(InputChannel inputChannel) {
super(inputChannel, UiThread.getHandler().getLooper());
- mInputChannel = inputChannel;
}
@Override
@@ -94,7 +92,6 @@
@Override
public void dispose() {
super.dispose();
- mInputChannel.dispose();
synchronized (mListeners) {
mListeners.clear();
mListenersArray = null;
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index d0b6fc8..4365d03 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -472,8 +472,7 @@
final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
- final DisplayContent dc = mChildren.get(i);
- final int pendingChanges = animator.getPendingLayoutChanges(dc.getDisplayId());
+ final int pendingChanges = mChildren.get(i).pendingLayoutChanges;
if ((pendingChanges & FINISH_LAYOUT_REDO_WALLPAPER) != 0) {
animator.mBulkUpdateParams |= SET_WALLPAPER_ACTION_PENDING;
}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 762066c..85ba806 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -85,8 +85,6 @@
private Rect mTmpRect = new Rect();
// For handling display rotations.
private Rect mTmpRect2 = new Rect();
- // For retrieving dim bounds
- private Rect mTmpRect3 = new Rect();
// Resize mode of the task. See {@link ActivityInfo#resizeMode}
private int mResizeMode;
diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java
index 8b0b6ce..42866f9 100644
--- a/services/core/java/com/android/server/wm/TaskPositioner.java
+++ b/services/core/java/com/android/server/wm/TaskPositioner.java
@@ -64,10 +64,6 @@
private static Factory sFactory;
- // The margin the pointer position has to be within the side of the screen to be
- // considered at the side of the screen.
- static final int SIDE_MARGIN_DIP = 100;
-
@IntDef(flag = true,
value = {
CTRL_NONE,
@@ -101,7 +97,6 @@
private DisplayContent mDisplayContent;
private final DisplayMetrics mDisplayMetrics = new DisplayMetrics();
private Rect mTmpRect = new Rect();
- private int mSideMargin;
private int mMinVisibleWidth;
private int mMinVisibleHeight;
@@ -309,7 +304,6 @@
// Notify InputMonitor to take mDragWindowHandle.
mDisplayContent.getInputMonitor().updateInputWindowsLw(true /*force*/);
- mSideMargin = dipToPixel(SIDE_MARGIN_DIP, mDisplayMetrics);
mMinVisibleWidth = dipToPixel(MINIMUM_VISIBLE_WIDTH_IN_DP, mDisplayMetrics);
mMinVisibleHeight = dipToPixel(MINIMUM_VISIBLE_HEIGHT_IN_DP, mDisplayMetrics);
display.getRealSize(mMaxVisibleSize);
@@ -488,12 +482,6 @@
int right = mWindowOriginalBounds.right;
int bottom = mWindowOriginalBounds.bottom;
- // The aspect which we have to respect. Note that if the orientation does not need to be
- // preserved the aspect will be calculated as 1.0 which neutralizes the following
- // computations.
- final float minAspect = !mPreserveOrientation
- ? 1.0f
- : (mStartOrientationWasLandscape ? MIN_ASPECT : (1.0f / MIN_ASPECT));
// Calculate the resulting width and height of the drag operation.
int width = right - left;
int height = bottom - top;
diff --git a/services/core/java/com/android/server/wm/TaskRecord.java b/services/core/java/com/android/server/wm/TaskRecord.java
index 4b3691c8..0ea108e 100644
--- a/services/core/java/com/android/server/wm/TaskRecord.java
+++ b/services/core/java/com/android/server/wm/TaskRecord.java
@@ -1085,8 +1085,8 @@
clearRootProcess();
- // TODO: Use window container controller once tasks are better synced between AM and WM
- mService.mWindowManager.notifyTaskRemovedFromRecents(taskId, userId);
+ mService.mWindowManager.mTaskSnapshotController.notifyTaskRemovedFromRecents(
+ taskId, userId);
}
void setTaskToAffiliateWith(TaskRecord taskToAffiliateWith) {
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 239bd00..6a7f0c3 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -738,7 +738,6 @@
// surface position.
updateSurfaceSize(getPendingTransaction());
final int windowingMode = getWindowingMode();
- final boolean isAlwaysOnTop = isAlwaysOnTop();
if (mDisplayContent == null) {
return;
diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java
index 6147272..13902ee 100644
--- a/services/core/java/com/android/server/wm/WallpaperController.java
+++ b/services/core/java/com/android/server/wm/WallpaperController.java
@@ -110,7 +110,6 @@
private final FindWallpaperTargetResult mFindResults = new FindWallpaperTargetResult();
private final ToBooleanFunction<WindowState> mFindWallpaperTargetFunction = w -> {
- final WindowAnimator winAnimator = mService.mAnimator;
if ((w.mAttrs.type == TYPE_WALLPAPER)) {
if (mFindResults.topWallpaper == null || mFindResults.resetTopWallpaper) {
mFindResults.setTopWallpaper(w);
diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java
index 4fce46b..3bd1d56 100644
--- a/services/core/java/com/android/server/wm/WindowAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowAnimator.java
@@ -306,24 +306,6 @@
}
}
- int getPendingLayoutChanges(final int displayId) {
- if (displayId < 0) {
- return 0;
- }
- final DisplayContent displayContent = mService.mRoot.getDisplayContent(displayId);
- return (displayContent != null) ? displayContent.pendingLayoutChanges : 0;
- }
-
- void setPendingLayoutChanges(final int displayId, final int changes) {
- if (displayId < 0) {
- return;
- }
- final DisplayContent displayContent = mService.mRoot.getDisplayContent(displayId);
- if (displayContent != null) {
- displayContent.pendingLayoutChanges |= changes;
- }
- }
-
private DisplayContentsAnimator getDisplayContentsAnimatorLocked(int displayId) {
if (displayId < 0) {
return null;
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 1ebaa5d..14214b4 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -313,11 +313,6 @@
static final int WINDOW_LAYER_MULTIPLIER = 5;
/**
- * Dim surface layer is immediately below target window.
- */
- static final int LAYER_OFFSET_DIM = 1;
-
- /**
* Animation thumbnail is as far as possible below the window above
* the thumbnail (or in other words as far as possible above the window
* below it).
@@ -367,8 +362,6 @@
private static final String DENSITY_OVERRIDE = "ro.config.density_override";
private static final String SIZE_OVERRIDE = "ro.config.size_override";
- private static final int MAX_SCREENSHOT_RETRIES = 3;
-
private static final String PROPERTY_EMULATOR_CIRCULAR = "ro.emulator.circular";
// Used to indicate that if there is already a transition set, it should be preserved when
@@ -2064,13 +2057,11 @@
final int pid = Binder.getCallingPid();
final int uid = Binder.getCallingUid();
long origId = Binder.clearCallingIdentity();
- final int displayId;
synchronized (mGlobalLock) {
final WindowState win = windowForClientLocked(session, client, false);
if (win == null) {
return 0;
}
- displayId = win.getDisplayId();
final DisplayContent displayContent = win.getDisplayContent();
final DisplayPolicy displayPolicy = displayContent.getDisplayPolicy();
@@ -2648,16 +2639,14 @@
getDefaultDisplayContentLocked().executeAppTransition();
}
- public void initializeRecentsAnimation(int targetActivityType,
+ void initializeRecentsAnimation(int targetActivityType,
IRecentsAnimationRunner recentsAnimationRunner,
RecentsAnimationController.RecentsAnimationCallbacks callbacks, int displayId,
SparseBooleanArray recentTaskIds) {
- synchronized (mGlobalLock) {
- mRecentsAnimationController = new RecentsAnimationController(this,
- recentsAnimationRunner, callbacks, displayId);
- mRoot.getDisplayContent(displayId).mAppTransition.updateBooster();
- mRecentsAnimationController.initialize(targetActivityType, recentTaskIds);
- }
+ mRecentsAnimationController = new RecentsAnimationController(this, recentsAnimationRunner,
+ callbacks, displayId);
+ mRoot.getDisplayContent(displayId).mAppTransition.updateBooster();
+ mRecentsAnimationController.initialize(targetActivityType, recentTaskIds);
}
@VisibleForTesting
@@ -2803,12 +2792,6 @@
mAtmInternal.notifyKeyguardFlagsChanged(callback, displayId);
}
- public boolean isKeyguardTrusted() {
- synchronized (mGlobalLock) {
- return mPolicy.isKeyguardTrustedLw();
- }
- }
-
public void setKeyguardGoingAway(boolean keyguardGoingAway) {
synchronized (mGlobalLock) {
mKeyguardGoingAway = keyguardGoingAway;
@@ -2954,13 +2937,6 @@
}
}
- public boolean isShowingDream() {
- synchronized (mGlobalLock) {
- // TODO(b/123372519): Fix this when dream can be shown on non-default display.
- return getDefaultDisplayContentLocked().getDisplayPolicy().isShowingDreamLw();
- }
- }
-
@Override
public void dismissKeyguard(IKeyguardDismissCallback callback, CharSequence message) {
if (!checkCallingPermission(permission.CONTROL_KEYGUARD, "dismissKeyguard")) {
@@ -2971,12 +2947,6 @@
}
}
- public void onKeyguardOccludedChanged(boolean occluded) {
- synchronized (mGlobalLock) {
- mPolicy.onKeyguardOccludedChangedLw(occluded);
- }
- }
-
@Override
public void setSwitchingUser(boolean switching) {
if (!checkCallingPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL,
@@ -5347,9 +5317,7 @@
}
void requestTraversal() {
- synchronized (mGlobalLock) {
- mWindowPlacerLocked.requestTraversal();
- }
+ mWindowPlacerLocked.requestTraversal();
}
/** Note that Locked in this case is on mLayoutToAnim */
@@ -5817,55 +5785,6 @@
}
}
- public void notifyAppRelaunching(IBinder token) {
- synchronized (mGlobalLock) {
- final AppWindowToken appWindow = mRoot.getAppWindowToken(token);
- if (appWindow != null) {
- appWindow.startRelaunching();
- }
- }
- }
-
- public void notifyAppRelaunchingFinished(IBinder token) {
- synchronized (mGlobalLock) {
- final AppWindowToken appWindow = mRoot.getAppWindowToken(token);
- if (appWindow != null) {
- appWindow.finishRelaunching();
- }
- }
- }
-
- public void notifyAppRelaunchesCleared(IBinder token) {
- synchronized (mGlobalLock) {
- final AppWindowToken appWindow = mRoot.getAppWindowToken(token);
- if (appWindow != null) {
- appWindow.clearRelaunching();
- }
- }
- }
-
- public void notifyAppResumedFinished(IBinder token) {
- synchronized (mGlobalLock) {
- final AppWindowToken appWindow = mRoot.getAppWindowToken(token);
- if (appWindow != null) {
- appWindow.getDisplayContent().mUnknownAppVisibilityController
- .notifyAppResumedFinished(appWindow);
- }
- }
- }
-
- /**
- * Called when a task has been removed from the recent tasks list.
- * <p>
- * Note: This doesn't go through {@link TaskWindowContainerController} yet as the window
- * container may not exist when this happens.
- */
- public void notifyTaskRemovedFromRecents(int taskId, int userId) {
- synchronized (mGlobalLock) {
- mTaskSnapshotController.notifyTaskRemovedFromRecents(taskId, userId);
- }
- }
-
private void dumpPolicyLocked(PrintWriter pw, String[] args, boolean dumpAll) {
pw.println("WINDOW MANAGER POLICY STATE (dumpsys window policy)");
mPolicy.dump(" ", pw, args);
@@ -6375,16 +6294,6 @@
}
}
- public void onDisplayChanged(int displayId) {
- synchronized (mGlobalLock) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
- if (displayContent != null) {
- displayContent.updateDisplayInfo();
- }
- mWindowPlacerLocked.requestTraversal();
- }
- }
-
@Override
public Object getWindowManagerLock() {
return mGlobalLock;
@@ -6395,21 +6304,18 @@
* a window.
* @param token Application token for which the activity will be relaunched.
*/
- public void setWillReplaceWindow(IBinder token, boolean animate) {
- synchronized (mGlobalLock) {
- final AppWindowToken appWindowToken = mRoot.getAppWindowToken(token);
- if (appWindowToken == null) {
- Slog.w(TAG_WM, "Attempted to set replacing window on non-existing app token "
- + token);
- return;
- }
- if (!appWindowToken.hasContentToDisplay()) {
- Slog.w(TAG_WM, "Attempted to set replacing window on app token with no content"
- + token);
- return;
- }
- appWindowToken.setWillReplaceWindows(animate);
+ void setWillReplaceWindow(IBinder token, boolean animate) {
+ final AppWindowToken appWindowToken = mRoot.getAppWindowToken(token);
+ if (appWindowToken == null) {
+ Slog.w(TAG_WM, "Attempted to set replacing window on non-existing app token " + token);
+ return;
}
+ if (!appWindowToken.hasContentToDisplay()) {
+ Slog.w(TAG_WM, "Attempted to set replacing window on app token with no content"
+ + token);
+ return;
+ }
+ appWindowToken.setWillReplaceWindows(animate);
}
/**
@@ -6457,19 +6363,17 @@
* @param token Application token for the activity whose window might be replaced.
* @param replacing Whether the window is being replaced or not.
*/
- public void scheduleClearWillReplaceWindows(IBinder token, boolean replacing) {
- synchronized (mGlobalLock) {
- final AppWindowToken appWindowToken = mRoot.getAppWindowToken(token);
- if (appWindowToken == null) {
- Slog.w(TAG_WM, "Attempted to reset replacing window on non-existing app token "
- + token);
- return;
- }
- if (replacing) {
- scheduleWindowReplacementTimeouts(appWindowToken);
- } else {
- appWindowToken.clearWillReplaceWindows();
- }
+ void scheduleClearWillReplaceWindows(IBinder token, boolean replacing) {
+ final AppWindowToken appWindowToken = mRoot.getAppWindowToken(token);
+ if (appWindowToken == null) {
+ Slog.w(TAG_WM, "Attempted to reset replacing window on non-existing app token "
+ + token);
+ return;
+ }
+ if (replacing) {
+ scheduleWindowReplacementTimeouts(appWindowToken);
+ } else {
+ appWindowToken.clearWillReplaceWindows();
}
}
@@ -6491,11 +6395,9 @@
}
}
- public void setDockedStackResizing(boolean resizing) {
- synchronized (mGlobalLock) {
- getDefaultDisplayContentLocked().getDockedDividerController().setResizing(resizing);
- requestTraversal();
- }
+ void setDockedStackResizing(boolean resizing) {
+ getDefaultDisplayContentLocked().getDockedDividerController().setResizing(resizing);
+ requestTraversal();
}
@Override
@@ -7040,7 +6942,9 @@
private final class LocalService extends WindowManagerInternal {
@Override
public void requestTraversalFromDisplayManager() {
- requestTraversal();
+ synchronized (mGlobalLock) {
+ requestTraversal();
+ }
}
@Override
diff --git a/services/core/java/com/android/server/wm/WindowProcessListener.java b/services/core/java/com/android/server/wm/WindowProcessListener.java
index 23d7a6a..1dade15 100644
--- a/services/core/java/com/android/server/wm/WindowProcessListener.java
+++ b/services/core/java/com/android/server/wm/WindowProcessListener.java
@@ -17,7 +17,6 @@
package com.android.server.wm;
import android.util.proto.ProtoOutputStream;
-import android.view.IRemoteAnimationRunner;
import android.view.RemoteAnimationAdapter;
/**
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 99ae18d..501a93e 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -520,11 +520,6 @@
/** When true this window can be displayed on screens owther than mOwnerUid's */
private boolean mShowToOwnerOnly;
- // Whether the window was visible when we set the app to invisible last time. WM uses
- // this as a hint to restore the surface (if available) for early animation next time
- // the app is brought visible.
- private boolean mWasVisibleBeforeClientHidden;
-
// This window will be replaced due to relaunch. This allows window manager
// to differentiate between simple removal of a window and replacement. In the latter case it
// will preserve the old window until the new one is drawn.
@@ -2013,8 +2008,6 @@
// Visibility of the removed window. Will be used later to update orientation later on.
boolean wasVisible = false;
- final int displayId = getDisplayId();
-
// First, see if we need to run an animation. If we do, we have to hold off on removing the
// window until the animation is done. If the display is frozen, just remove immediately,
// since the animation wouldn't be seen.
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index ef1d110..c676e72 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -271,20 +271,17 @@
if (mAttrType == LayoutParams.TYPE_STATUS_BAR && mWin.isVisibleByPolicy()) {
// Upon completion of a not-visible to visible status bar animation a relayout is
// required.
- if (displayContent != null) {
- displayContent.setLayoutNeeded();
- }
+ displayContent.setLayoutNeeded();
}
mWin.onExitAnimationDone();
- final int displayId = mWin.getDisplayId();
- int pendingLayoutChanges = FINISH_LAYOUT_REDO_ANIM;
+ displayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_ANIM;
if (displayContent.mWallpaperController.isWallpaperTarget(mWin)) {
- pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
+ displayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
}
- mAnimator.setPendingLayoutChanges(displayId, pendingLayoutChanges);
- if (DEBUG_LAYOUT_REPEATS)
+ if (DEBUG_LAYOUT_REPEATS) {
mService.mWindowPlacerLocked.debugLayoutRepeats(
- "WindowStateAnimator", mAnimator.getPendingLayoutChanges(displayId));
+ "WindowStateAnimator", displayContent.pendingLayoutChanges);
+ }
if (mWin.mAppToken != null) {
mWin.mAppToken.updateReportedVisibilityLocked();
@@ -429,10 +426,6 @@
}
}
- private int getLayerStack() {
- return mWin.getDisplayContent().getDisplay().getLayerStack();
- }
-
void resetDrawState() {
mDrawState = DRAW_PENDING;
@@ -1072,8 +1065,7 @@
if (mSurfaceResized) {
mReportSurfaceResized = true;
- mAnimator.setPendingLayoutChanges(w.getDisplayId(),
- FINISH_LAYOUT_REDO_WALLPAPER);
+ mWin.getDisplayContent().pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
}
}
@@ -1168,16 +1160,16 @@
if (mIsWallpaper) {
w.dispatchWallpaperVisibility(true);
}
- if (!w.getDisplayContent().getLastHasContent()) {
+ final DisplayContent displayContent = w.getDisplayContent();
+ if (!displayContent.getLastHasContent()) {
// This draw means the difference between unique content and mirroring.
// Run another pass through performLayout to set mHasContent in the
// LogicalDisplay.
- mAnimator.setPendingLayoutChanges(w.getDisplayId(),
- FINISH_LAYOUT_REDO_ANIM);
+ displayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_ANIM;
if (DEBUG_LAYOUT_REPEATS) {
mService.mWindowPlacerLocked.debugLayoutRepeats(
"showSurfaceRobustlyLocked " + w,
- mAnimator.getPendingLayoutChanges(w.getDisplayId()));
+ displayContent.pendingLayoutChanges);
}
}
} else {