diff options
author | 2019-09-19 05:25:05 +0000 | |
---|---|---|
committer | 2019-09-19 05:25:05 +0000 | |
commit | e18cb098628a66c3c199f29af92f565f72534970 (patch) | |
tree | 4f863216f2b4961cb61fe97a396b6aef70bde7df | |
parent | 37f9bd820e6d20d215ac08b4853278edacff6384 (diff) | |
parent | 8419e4bbec95a7f0358828eccecfb0b5a901ca01 (diff) |
Merge "Internal cleanup of window manager"
22 files changed, 69 insertions, 258 deletions
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java index 5f98d1d54a24..59f051bc76a6 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 @@ final class AccessibilityController { 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 @@ final class AccessibilityController { 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 7a667315c6c3..c54ccd4d6844 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 @@ final class ActivityRecord extends ConfigurationContainer { 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 @@ final class ActivityRecord extends ConfigurationContainer { if (display != null) { display.handleActivitySizeCompatModeIfNeeded(r); } + + if (r.mAppWindowToken != null) { + r.mAppWindowToken.getDisplayContent().mUnknownAppVisibilityController + .notifyAppResumedFinished(r.mAppWindowToken); + } } /** @@ -4311,7 +4318,9 @@ final class ActivityRecord extends ConfigurationContainer { "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 1aa1d483f707..d151f86ff810 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 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { } 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 2f7acba595c2..468a13d45d55 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_ACTIVITIES_ON_SECONDARY_ 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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { /** 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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { 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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { final long origId = Binder.clearCallingIdentity(); synchronized (mGlobalLock) { ActivityRecord.activityResumedLocked(token); - mWindowManager.notifyAppResumedFinished(token); } Binder.restoreCallingIdentity(origId); } @@ -2920,7 +2908,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { 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 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { 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 557a609dbc7b..66d52cc9bf5a 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 @@ public class AppTransition implements Dump { 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 f2ad56a8fdfa..94119e8b7bc7 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 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo * 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 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } - 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 4dbb0092140c..10d48c4d5282 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 @@ public class DisplayPolicy { 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 120ce3eb146e..ae3b5f2f70d3 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.AppTransition.TOUCH_RESPONSE_INTERPOLATOR; 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 @@ public class DockedStackDividerController { 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 @@ public class DockedStackDividerController { } /** - * @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 20a13334e564..c5c236416013 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 d528ef6ec6a5..2b5eb3ac29fb 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 @@ class KeyguardController { 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 @@ class KeyguardController { return; } - mWindowManager.onKeyguardOccludedChanged(isDisplayOccluded(DEFAULT_DISPLAY)); + mWindowManager.mPolicy.onKeyguardOccludedChangedLw(isDisplayOccluded(DEFAULT_DISPLAY)); if (isKeyguardLocked()) { mService.deferWindowLayout(); try { @@ -381,7 +380,7 @@ class KeyguardController { * @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 @@ class KeyguardController { } // 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 8d08aa370b44..6b8144c69079 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 com.android.server.UiThread; 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 @@ public class PointerEventDispatcher extends InputEventReceiver { @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 d0b6fc890ca0..4365d0325545 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 @@ class RootWindowContainer extends WindowContainer<DisplayContent> 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 762066c1f80a..85ba80602bdb 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 @@ class Task extends WindowContainer<AppWindowToken> implements ConfigurationConta 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 8b0b6ce8ce32..42866f97b4b8 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 @@ class TaskPositioner implements IBinder.DeathRecipient { 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 @@ class TaskPositioner implements IBinder.DeathRecipient { 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 @@ class TaskPositioner implements IBinder.DeathRecipient { // 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 @@ class TaskPositioner implements IBinder.DeathRecipient { 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 4b3691c88a06..0ea108e30280 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 @@ class TaskRecord extends ConfigurationContainer { 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 58542e582067..94651294da10 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 @@ public class TaskStack extends WindowContainer<Task> implements // 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 614727263469..13902eedbfba 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 @@ class WallpaperController { 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 4fce46b9dfaf..3bd1d560a42c 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 @@ public class WindowAnimator { } } - 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 1ebaa5da5bef..14214b4be7d1 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 @@ public class WindowManagerService extends IWindowManager.Stub 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 @@ public class WindowManagerService extends IWindowManager.Stub 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 @@ public class WindowManagerService extends IWindowManager.Stub 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 @@ public class WindowManagerService extends IWindowManager.Stub 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 @@ public class WindowManagerService extends IWindowManager.Stub 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 class WindowManagerService extends IWindowManager.Stub } } - 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 class WindowManagerService extends IWindowManager.Stub } } - 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 @@ public class WindowManagerService extends IWindowManager.Stub } void requestTraversal() { - synchronized (mGlobalLock) { - mWindowPlacerLocked.requestTraversal(); - } + mWindowPlacerLocked.requestTraversal(); } /** Note that Locked in this case is on mLayoutToAnim */ @@ -5817,55 +5785,6 @@ public class WindowManagerService extends IWindowManager.Stub } } - 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 class WindowManagerService extends IWindowManager.Stub } } - 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 @@ public class WindowManagerService extends IWindowManager.Stub * 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 @@ public class WindowManagerService extends IWindowManager.Stub * @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 class WindowManagerService extends IWindowManager.Stub } } - 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 @@ public class WindowManagerService extends IWindowManager.Stub 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 23d7a6a9d293..1dade1519fdb 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 99ae18d67be5..501a93ef6645 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 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP /** 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 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // 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 ef1d110c9617..c676e723de71 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 @@ class WindowStateAnimator { 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 @@ class WindowStateAnimator { } } - private int getLayerStack() { - return mWin.getDisplayContent().getDisplay().getLayerStack(); - } - void resetDrawState() { mDrawState = DRAW_PENDING; @@ -1072,8 +1065,7 @@ class WindowStateAnimator { if (mSurfaceResized) { mReportSurfaceResized = true; - mAnimator.setPendingLayoutChanges(w.getDisplayId(), - FINISH_LAYOUT_REDO_WALLPAPER); + mWin.getDisplayContent().pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER; } } @@ -1168,16 +1160,16 @@ class WindowStateAnimator { 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 { |