From b0fc817f284899cf4524b79a840bb1753b966119 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Thu, 23 Nov 2017 17:04:08 +0000 Subject: [PATCH] Lock free app animations (7/n): Cleanup - Make sure persister pausing is working - Make sure Surface animation thread is being boosted - Move all remaining fields from AppWindowAnimator and NUKE it, also remove getAnimLayerAdjustment and do the z-boosting directly on the AppWindowToken. Bug: 64674361 Test: go/wm-smoke Test: Inspect thread priorities before/during/after animations Change-Id: Ie64c8231bcebd8536eab476ee9f2c51abf85480c --- .../com/android/server/wm/AppWindowAnimator.java | 45 ----------------- .../server/wm/AppWindowContainerController.java | 2 +- .../java/com/android/server/wm/AppWindowToken.java | 59 ++++++++++++---------- .../java/com/android/server/wm/DisplayContent.java | 29 +++-------- .../com/android/server/wm/WallpaperController.java | 18 +------ .../android/server/wm/WallpaperWindowToken.java | 2 +- .../java/com/android/server/wm/WindowAnimator.java | 9 ++-- .../android/server/wm/WindowManagerService.java | 2 +- .../wm/WindowManagerThreadPriorityBooster.java | 11 ++-- .../java/com/android/server/wm/WindowState.java | 33 +++--------- .../com/android/server/wm/WindowStateAnimator.java | 2 - .../com/android/server/wm/WindowSurfacePlacer.java | 1 - .../java/com/android/server/wm/WindowToken.java | 5 -- .../src/com/android/server/wm/WindowTestUtils.java | 6 --- 14 files changed, 64 insertions(+), 160 deletions(-) delete mode 100644 services/core/java/com/android/server/wm/AppWindowAnimator.java diff --git a/services/core/java/com/android/server/wm/AppWindowAnimator.java b/services/core/java/com/android/server/wm/AppWindowAnimator.java deleted file mode 100644 index 4f38f739b2d2..000000000000 --- a/services/core/java/com/android/server/wm/AppWindowAnimator.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.server.wm; - -import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; -import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; - -import android.view.SurfaceControl; -import android.view.animation.Animation; -import android.view.animation.Transformation; - -// TODO: Move all remaining fields to AppWindowToken and remove this class. -public class AppWindowAnimator { - - // Have we been asked to have this token keep the screen frozen? - // Protect with mAnimator. - boolean freezingScreen; - - /** - * How long we last kept the screen frozen. - */ - int lastFreezeDuration; - - // Offset to the window of all layers in the token, for use by - // AppWindowToken animations. - int animLayerAdjustment; - - // Propagated from AppWindowToken.allDrawn, to determine when - // the state changes. - boolean allDrawn; -} diff --git a/services/core/java/com/android/server/wm/AppWindowContainerController.java b/services/core/java/com/android/server/wm/AppWindowContainerController.java index 73732dd83e6e..ae9f28bcb6a6 100644 --- a/services/core/java/com/android/server/wm/AppWindowContainerController.java +++ b/services/core/java/com/android/server/wm/AppWindowContainerController.java @@ -690,7 +690,7 @@ public class AppWindowContainerController return; } if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Clear freezing of " + mToken + ": hidden=" - + mContainer.isHidden() + " freezing=" + mContainer.mAppAnimator.freezingScreen); + + mContainer.isHidden() + " freezing=" + mContainer.isFreezingScreen()); mContainer.stopFreezingScreen(true, force); } } diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index 0ce37bb63f81..04a1beb20204 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -62,7 +62,6 @@ import android.os.Binder; import android.os.Debug; import android.os.IBinder; import android.os.RemoteException; -import android.os.SystemClock; import android.os.Trace; import android.util.Slog; import android.util.proto.ProtoOutputStream; @@ -96,8 +95,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree // Non-null only for application tokens. final IApplicationToken appToken; - @NonNull final AppWindowAnimator mAppAnimator; - final boolean mVoiceInteraction; /** @see WindowContainer#fillsParent() */ @@ -125,6 +122,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree private int mNumDrawnWindows; boolean inPendingTransaction; boolean allDrawn; + private boolean mLastAllDrawn; + // Set to true when this app creates a surface while in the middle of an animation. In that // case do not clear allDrawn until the animation completes. boolean deferClearAllDrawn; @@ -211,6 +210,12 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree private AppWindowThumbnail mThumbnail; + /** Have we been asked to have this token keep the screen frozen? */ + private boolean mFreezingScreen; + + /** Whether this token should be boosted at the top of all app window tokens. */ + private boolean mNeedsZBoost; + AppWindowToken(WindowManagerService service, IApplicationToken token, boolean voiceInteraction, DisplayContent dc, long inputDispatchingTimeoutNanos, boolean fullscreen, boolean showForAllUsers, int targetSdk, int orientation, int rotationAnimationHint, @@ -240,7 +245,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree mVoiceInteraction = voiceInteraction; mFillsParent = fillsParent; mInputApplicationHandle = new InputApplicationHandle(this); - mAppAnimator = new AppWindowAnimator(); } void onFirstWindowDrawn(WindowState win, WindowStateAnimator winAnimator) { @@ -1018,13 +1022,12 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree void startFreezingScreen() { if (DEBUG_ORIENTATION) logWithStack(TAG, "Set freezing of " + appToken + ": hidden=" - + isHidden() + " freezing=" + mAppAnimator.freezingScreen + " hiddenRequested=" + + isHidden() + " freezing=" + mFreezingScreen + " hiddenRequested=" + hiddenRequested); if (!hiddenRequested) { - if (!mAppAnimator.freezingScreen) { - mAppAnimator.freezingScreen = true; + if (!mFreezingScreen) { + mFreezingScreen = true; mService.registerAppFreezeListener(this); - mAppAnimator.lastFreezeDuration = 0; mService.mAppsFreezingScreen++; if (mService.mAppsFreezingScreen == 1) { mService.startFreezingDisplayLocked(false, 0, 0, getDisplayContent()); @@ -1041,7 +1044,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree } void stopFreezingScreen(boolean unfreezeSurfaceNow, boolean force) { - if (!mAppAnimator.freezingScreen) { + if (!mFreezingScreen) { return; } if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Clear freezing of " + this + " force=" + force); @@ -1053,10 +1056,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree } if (force || unfrozeWindows) { if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "No longer freezing: " + this); - mAppAnimator.freezingScreen = false; + mFreezingScreen = false; mService.unregisterAppFreezeListener(this); - mAppAnimator.lastFreezeDuration = - (int)(SystemClock.elapsedRealtime() - mService.mDisplayFreezeTime); mService.mAppsFreezingScreen--; mService.mLastFinishedFreezeSource = this; } @@ -1203,17 +1204,17 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree @Override void checkAppWindowsReadyToShow() { - if (allDrawn == mAppAnimator.allDrawn) { + if (allDrawn == mLastAllDrawn) { return; } - mAppAnimator.allDrawn = allDrawn; + mLastAllDrawn = allDrawn; if (!allDrawn) { return; } // The token has now changed state to having all windows shown... what to do, what to do? - if (mAppAnimator.freezingScreen) { + if (mFreezingScreen) { showAllWindowsLocked(); stopFreezingScreen(false, true); if (DEBUG_ORIENTATION) Slog.i(TAG, @@ -1297,10 +1298,10 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree if (DEBUG_STARTING_WINDOW_VERBOSE && w == startingWindow) { Slog.d(TAG, "updateWindows: starting " + w + " isOnScreen=" + w.isOnScreen() - + " allDrawn=" + allDrawn + " freezingScreen=" + mAppAnimator.freezingScreen); + + " allDrawn=" + allDrawn + " freezingScreen=" + mFreezingScreen); } - if (allDrawn && !mAppAnimator.freezingScreen) { + if (allDrawn && !mFreezingScreen) { return false; } @@ -1335,7 +1336,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree if (DEBUG_VISIBILITY || DEBUG_ORIENTATION) Slog.v(TAG, "tokenMayBeDrawn: " + this + " w=" + w + " numInteresting=" + mNumInterestingWindows - + " freezingScreen=" + mAppAnimator.freezingScreen + + " freezingScreen=" + mFreezingScreen + " mAppFreezing=" + w.mAppFreezing); isInterestingAndDrawn = true; @@ -1502,11 +1503,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree true /* topToBottom */); } - @Override - int getAnimLayerAdjustment() { - return mAppAnimator.animLayerAdjustment; - } - boolean applyAnimationLocked(WindowManager.LayoutParams lp, int transit, boolean enter, boolean isVoiceInteraction) { @@ -1531,7 +1527,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree mService.mSurfaceAnimationRunner); startAnimation(getPendingTransaction(), adapter, !isVisible()); if (a.getZAdjustment() == Animation.ZORDER_TOP) { - mAppAnimator.animLayerAdjustment = 1; + mNeedsZBoost = true; getDisplayContent().assignWindowLayers(false /* setLayoutNeeded */); } mTransit = transit; @@ -1618,7 +1614,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree mTransit = TRANSIT_UNSET; mTransitFlags = 0; - mAppAnimator.animLayerAdjustment = 0; + mNeedsZBoost = false; setAppLayoutChanges(FINISH_LAYOUT_REDO_ANIM | FINISH_LAYOUT_REDO_WALLPAPER, "AppWindowToken"); @@ -1742,13 +1738,13 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree pw.print(prefix); pw.print("mAppStopped="); pw.println(mAppStopped); } if (mNumInterestingWindows != 0 || mNumDrawnWindows != 0 - || allDrawn || mAppAnimator.allDrawn) { + || allDrawn || mLastAllDrawn) { pw.print(prefix); pw.print("mNumInterestingWindows="); pw.print(mNumInterestingWindows); pw.print(" mNumDrawnWindows="); pw.print(mNumDrawnWindows); pw.print(" inPendingTransaction="); pw.print(inPendingTransaction); pw.print(" allDrawn="); pw.print(allDrawn); - pw.print(" (animator="); pw.print(mAppAnimator.allDrawn); + pw.print(" lastAllDrawn="); pw.print(mLastAllDrawn); pw.println(")"); } if (inPendingTransaction) { @@ -1809,6 +1805,15 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree super.prepareSurfaces(); } + boolean isFreezingScreen() { + return mFreezingScreen; + } + + @Override + boolean needsZBoost() { + return mNeedsZBoost || super.needsZBoost(); + } + @CallSuper @Override public void writeToProto(ProtoOutputStream proto, long fieldId, boolean trim) { diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 056ece3da1e8..a4ef75098255 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -351,7 +351,6 @@ class DisplayContent extends WindowContainer target.mWinAnimator.mAnimLayer) { // If the window we are currently targeting is involved with an animation, // and it is on top of the next target we will be over, then hold off on // moving until that is done. - setInputMethodTarget(highestTarget, true, mInputMethodAnimLayerAdjustment); + setInputMethodTarget(highestTarget, true); return highestTarget; } } @@ -2489,23 +2477,20 @@ class DisplayContent extends WindowContainer= 0; curTokenNdx--) { final WallpaperWindowToken token = mWallpaperTokens.get(curTokenNdx); - token.updateWallpaperWindows(visible, mWallpaperAnimLayerAdjustment); + token.updateWallpaperWindows(visible); token.getDisplayContent().assignWindowLayers(false); } } @@ -566,12 +560,6 @@ class WallpaperController { if (DEBUG_WALLPAPER) Slog.v(TAG, "Wallpaper visibility: " + visible); if (visible) { - // If the wallpaper target is animating, we may need to copy its layer adjustment. - // Only do this if we are not transferring between two wallpaper targets. - mWallpaperAnimLayerAdjustment = - (mPrevWallpaperTarget == null && mWallpaperTarget.mAppToken != null) - ? mWallpaperTarget.mAppToken.getAnimLayerAdjustment() : 0; - if (mWallpaperTarget.mWallpaperX >= 0) { mLastWallpaperX = mWallpaperTarget.mWallpaperX; mLastWallpaperXStep = mWallpaperTarget.mWallpaperXStep; @@ -682,10 +670,6 @@ class WallpaperController { pw.print("mLastWallpaperDisplayOffsetX="); pw.print(mLastWallpaperDisplayOffsetX); pw.print(" mLastWallpaperDisplayOffsetY="); pw.println(mLastWallpaperDisplayOffsetY); } - - if (mWallpaperAnimLayerAdjustment != 0) { - pw.println(prefix + "mWallpaperAnimLayerAdjustment=" + mWallpaperAnimLayerAdjustment); - } } /** Helper class for storing the results of a wallpaper target find operation. */ diff --git a/services/core/java/com/android/server/wm/WallpaperWindowToken.java b/services/core/java/com/android/server/wm/WallpaperWindowToken.java index c6b3bd343c30..2ae5c7bd9c25 100644 --- a/services/core/java/com/android/server/wm/WallpaperWindowToken.java +++ b/services/core/java/com/android/server/wm/WallpaperWindowToken.java @@ -117,7 +117,7 @@ class WallpaperWindowToken extends WindowToken { } } - void updateWallpaperWindows(boolean visible, int animLayerAdj) { + void updateWallpaperWindows(boolean visible) { if (isHidden() == visible) { if (DEBUG_WALLPAPER_LIGHT) Slog.d(TAG, diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java index 7f2f8c55111a..8bceb640aa50 100644 --- a/services/core/java/com/android/server/wm/WindowAnimator.java +++ b/services/core/java/com/android/server/wm/WindowAnimator.java @@ -50,7 +50,7 @@ public class WindowAnimator { /** Is any window animating? */ private boolean mAnimating; - private boolean mLastAnimating; + private boolean mLastRootAnimating; final Choreographer.FrameCallback mAnimationFrameCallback; @@ -237,7 +237,8 @@ public class WindowAnimator { mWindowPlacerLocked.requestTraversal(); } - if (mAnimating && !mLastAnimating) { + final boolean rootAnimating = mService.mRoot.isSelfOrChildAnimating(); + if (rootAnimating && !mLastRootAnimating) { // Usually app transitions but quite a load onto the system already (with all the // things happening in app), so pause task snapshot persisting to not increase the @@ -245,13 +246,13 @@ public class WindowAnimator { mService.mTaskSnapshotController.setPersisterPaused(true); Trace.asyncTraceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "animating", 0); } - if (!mAnimating && mLastAnimating) { + if (!rootAnimating && mLastRootAnimating) { mWindowPlacerLocked.requestTraversal(); mService.mTaskSnapshotController.setPersisterPaused(false); Trace.asyncTraceEnd(Trace.TRACE_TAG_WINDOW_MANAGER, "animating", 0); } - mLastAnimating = mAnimating; + mLastRootAnimating = rootAnimating; if (mRemoveReplacedWindows) { mService.mRoot.removeReplacedWindows(); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 2056a9c85934..ca13984c40df 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2627,7 +2627,7 @@ public class WindowManagerService extends IWindowManager.Stub synchronized (mWindowMap) { for (final WindowState win : mWindowMap.values()) { final AppWindowToken appToken = win.mAppToken; - if (appToken != null && appToken.mAppAnimator != null) { + if (appToken != null) { appToken.endDelayingAnimationStart(); } } diff --git a/services/core/java/com/android/server/wm/WindowManagerThreadPriorityBooster.java b/services/core/java/com/android/server/wm/WindowManagerThreadPriorityBooster.java index 1b2eb465399a..dd89b3b29b9d 100644 --- a/services/core/java/com/android/server/wm/WindowManagerThreadPriorityBooster.java +++ b/services/core/java/com/android/server/wm/WindowManagerThreadPriorityBooster.java @@ -36,6 +36,7 @@ class WindowManagerThreadPriorityBooster extends ThreadPriorityBooster { private final Object mLock = new Object(); private final int mAnimationThreadId; + private final int mSurfaceAnimationThreadId; @GuardedBy("mLock") private boolean mAppTransitionRunning; @@ -45,14 +46,16 @@ class WindowManagerThreadPriorityBooster extends ThreadPriorityBooster { WindowManagerThreadPriorityBooster() { super(THREAD_PRIORITY_DISPLAY, INDEX_WINDOW); mAnimationThreadId = AnimationThread.get().getThreadId(); + mSurfaceAnimationThreadId = SurfaceAnimationThread.get().getThreadId(); } @Override public void boost() { - // Do not boost the animation thread. As the animation thread is changing priorities, + // Do not boost the animation threads. As the animation threads are changing priorities, // boosting it might mess up the priority because we reset it the the previous priority. - if (myTid() == mAnimationThreadId) { + final int myTid = myTid(); + if (myTid == mAnimationThreadId || myTid == mSurfaceAnimationThreadId) { return; } super.boost(); @@ -62,7 +65,8 @@ class WindowManagerThreadPriorityBooster extends ThreadPriorityBooster { public void reset() { // See comment in boost(). - if (myTid() == mAnimationThreadId) { + final int myTid = myTid(); + if (myTid == mAnimationThreadId || myTid == mSurfaceAnimationThreadId) { return; } super.reset(); @@ -92,5 +96,6 @@ class WindowManagerThreadPriorityBooster extends ThreadPriorityBooster { ? TOP_APP_PRIORITY_BOOST : THREAD_PRIORITY_DISPLAY; setBoostToPriority(priority); setThreadPriority(mAnimationThreadId, priority); + setThreadPriority(mSurfaceAnimationThreadId, priority); } } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index b635f4344591..f39a9ec34dd9 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1501,7 +1501,7 @@ class WindowState extends WindowContainer implements WindowManagerP */ boolean isInteresting() { return mAppToken != null && !mAppDied - && (!mAppToken.mAppAnimator.freezingScreen || !mAppFreezing); + && (!mAppToken.isFreezingScreen() || !mAppFreezing); } /** @@ -2003,28 +2003,6 @@ class WindowState extends WindowContainer implements WindowManagerP mHasSurface = hasSurface; } - int getAnimLayerAdjustment() { - if (mIsImWindow && mService.mInputMethodTarget != null) { - final AppWindowToken appToken = mService.mInputMethodTarget.mAppToken; - if (appToken != null) { - return appToken.getAnimLayerAdjustment(); - } - } - - return mToken.getAnimLayerAdjustment(); - } - - int getSpecialWindowAnimLayerAdjustment() { - int specialAdjustment = 0; - if (mIsImWindow) { - specialAdjustment = getDisplayContent().mInputMethodAnimLayerAdjustment; - } else if (mIsWallpaper) { - specialAdjustment = getDisplayContent().mWallpaperController.getAnimLayerAdjustment(); - } - - return mLayer + specialAdjustment; - } - boolean canBeImeTarget() { if (mIsImWindow) { // IME windows can't be IME targets. IME targets are required to be below the IME @@ -3154,7 +3132,6 @@ class WindowState extends WindowContainer implements WindowManagerP pw.print(prefix); pw.print("mBaseLayer="); pw.print(mBaseLayer); pw.print(" mSubLayer="); pw.print(mSubLayer); pw.print(" mAnimLayer="); pw.print(mLayer); pw.print("+"); - pw.print(getAnimLayerAdjustment()); pw.print("="); pw.print(mWinAnimator.mAnimLayer); pw.print(" mLastLayer="); pw.println(mWinAnimator.mLastLayer); } @@ -4400,7 +4377,13 @@ class WindowState extends WindowContainer implements WindowManagerP @Override boolean needsZBoost() { - return getAnimLayerAdjustment() > 0 || mWillReplaceWindow; + if (mIsImWindow && mService.mInputMethodTarget != null) { + final AppWindowToken appToken = mService.mInputMethodTarget.mAppToken; + if (appToken != null) { + return appToken.needsZBoost(); + } + } + return mWillReplaceWindow; } private void applyDims(Dimmer dimmer) { diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 022b6f3cf0f8..ce93b950af6c 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -102,7 +102,6 @@ class WindowStateAnimator { final WindowState mWin; private final WindowStateAnimator mParentWinAnimator; final WindowAnimator mAnimator; - AppWindowAnimator mAppAnimator; final Session mSession; final WindowManagerPolicy mPolicy; final Context mContext; @@ -227,7 +226,6 @@ class WindowStateAnimator { mWin = win; mParentWinAnimator = !win.isChildWindow() ? null : win.getParentWindow().mWinAnimator; - mAppAnimator = win.mAppToken == null ? null : win.mAppToken.mAppAnimator; mSession = win.mSession; mAttrType = win.mAttrs.type; mIsWallpaper = win.mIsWallpaper; diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java index cfe8672b3507..bdab9c765d36 100644 --- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java +++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java @@ -397,7 +397,6 @@ class WindowSurfacePlacer { final int appsCount = mService.mOpeningApps.size(); for (int i = 0; i < appsCount; i++) { AppWindowToken wtoken = mService.mOpeningApps.valueAt(i); - final AppWindowAnimator appAnimator = wtoken.mAppAnimator; if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "Now opening app" + wtoken); if (!wtoken.setVisibility(animLp, true, transit, false, voiceInteraction)){ diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java index 924aa6297b13..bad9bf53fc3b 100644 --- a/services/core/java/com/android/server/wm/WindowToken.java +++ b/services/core/java/com/android/server/wm/WindowToken.java @@ -199,11 +199,6 @@ class WindowToken extends WindowContainer { return mChildren.isEmpty(); } - // Used by AppWindowToken. - int getAnimLayerAdjustment() { - return 0; - } - WindowState getReplacingWindow() { for (int i = mChildren.size() - 1; i >= 0; i--) { final WindowState win = mChildren.get(i); diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java b/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java index 5f587444fcf4..012fc2329ea4 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java @@ -160,7 +160,6 @@ public class WindowTestUtils { /* Used so we can gain access to some protected members of the {@link WindowToken} class */ public static class TestWindowToken extends WindowToken { - int adj = 0; TestWindowToken(int type, DisplayContent dc) { this(type, dc, false /* persistOnEmpty */); @@ -178,11 +177,6 @@ public class WindowTestUtils { boolean hasWindow(WindowState w) { return mChildren.contains(w); } - - @Override - int getAnimLayerAdjustment() { - return adj; - } } /* Used so we can gain access to some protected members of the {@link Task} class */ -- 2.11.0