diff options
| author | 2022-03-22 18:19:19 +0000 | |
|---|---|---|
| committer | 2022-03-22 18:19:19 +0000 | |
| commit | f51bb0783b4d941f0f2ea63142977ffcf983312c (patch) | |
| tree | 29ab9129b6636d8aae7425b6db07727d6b468a14 | |
| parent | be8f4d0cd0c90e60536071443cb66b50b6fb3cfc (diff) | |
| parent | f3732b4991886d4c84377e6c0ddafd2ff92bae72 (diff) | |
Merge "Migrate DEBUG_ANIM logcat message to ProtoLog." into tm-dev
14 files changed, 289 insertions, 72 deletions
diff --git a/core/java/com/android/internal/policy/TransitionAnimation.java b/core/java/com/android/internal/policy/TransitionAnimation.java index 377dfd0fb137..fd8534d45b2b 100644 --- a/core/java/com/android/internal/policy/TransitionAnimation.java +++ b/core/java/com/android/internal/policy/TransitionAnimation.java @@ -29,6 +29,8 @@ import static android.view.WindowManager.TRANSIT_OLD_WALLPAPER_INTRA_CLOSE; import static android.view.WindowManager.TRANSIT_OLD_WALLPAPER_INTRA_OPEN; import static android.view.WindowManager.TRANSIT_OPEN; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; + import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; @@ -60,6 +62,7 @@ import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; import com.android.internal.R; +import com.android.internal.protolog.common.ProtoLog; import java.util.List; @@ -295,9 +298,9 @@ public class TransitionAnimation { @Nullable private AttributeCache.Entry getCachedAnimations(LayoutParams lp) { if (mDebug) { - Slog.v(mTag, "Loading animations: layout params pkg=" - + (lp != null ? lp.packageName : null) - + " resId=0x" + (lp != null ? Integer.toHexString(lp.windowAnimations) : null)); + ProtoLog.v(WM_DEBUG_ANIM, "Loading animations: layout params pkg=%s resId=0x%x", + lp != null ? lp.packageName : null, + lp != null ? lp.windowAnimations : 0); } if (lp != null && lp.windowAnimations != 0) { // If this is a system resource, don't try to load it from the @@ -309,7 +312,7 @@ public class TransitionAnimation { packageName = DEFAULT_PACKAGE; } if (mDebug) { - Slog.v(mTag, "Loading animations: picked package=" + packageName); + ProtoLog.v(WM_DEBUG_ANIM, "Loading animations: picked package=%s", packageName); } return AttributeCache.instance().get(packageName, resId, com.android.internal.R.styleable.WindowAnimation); @@ -320,16 +323,16 @@ public class TransitionAnimation { @Nullable private AttributeCache.Entry getCachedAnimations(String packageName, int resId) { if (mDebug) { - Slog.v(mTag, "Loading animations: package=" - + packageName + " resId=0x" + Integer.toHexString(resId)); + ProtoLog.v(WM_DEBUG_ANIM, "Loading animations: package=%s resId=0x%x", + packageName, resId); } if (packageName != null) { if ((resId & 0xFF000000) == 0x01000000) { packageName = DEFAULT_PACKAGE; } if (mDebug) { - Slog.v(mTag, "Loading animations: picked package=" - + packageName); + ProtoLog.v(WM_DEBUG_ANIM, "Loading animations: picked package=%s", + packageName); } return AttributeCache.instance().get(packageName, resId, com.android.internal.R.styleable.WindowAnimation); diff --git a/core/java/com/android/internal/protolog/ProtoLogGroup.java b/core/java/com/android/internal/protolog/ProtoLogGroup.java index 45c6d5f10a5a..7f36c79591b3 100644 --- a/core/java/com/android/internal/protolog/ProtoLogGroup.java +++ b/core/java/com/android/internal/protolog/ProtoLogGroup.java @@ -60,6 +60,7 @@ public enum ProtoLogGroup implements IProtoLogGroup { Consts.TAG_WM), WM_DEBUG_APP_TRANSITIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), + WM_DEBUG_ANIM(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_APP_TRANSITIONS_ANIM(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_RECENTS_ANIMATIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json index 9ff6d931cb88..99cb40a7fce7 100644 --- a/data/etc/services.core.protolog.json +++ b/data/etc/services.core.protolog.json @@ -67,6 +67,12 @@ "group": "WM_DEBUG_TASKS", "at": "com\/android\/server\/wm\/Task.java" }, + "-2052051397": { + "message": "Clear animatingExit: reason=destroySurface win=%s", + "level": "DEBUG", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "-2049725903": { "message": "Task back pressed on root taskId=%d", "level": "VERBOSE", @@ -133,6 +139,12 @@ "group": "WM_DEBUG_SYNC_ENGINE", "at": "com\/android\/server\/wm\/BLASTSyncEngine.java" }, + "-1969928125": { + "message": "Animation start for %s, anim=%s", + "level": "DEBUG", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/SurfaceAnimator.java" + }, "-1963461591": { "message": "Removing %s from %s", "level": "VERBOSE", @@ -169,6 +181,12 @@ "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, + "-1933723759": { + "message": "Clear animatingExit: reason=relayoutVisibleWindow win=%s", + "level": "DEBUG", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "-1924376693": { "message": " Setting Ready-group to %b. group=%s from %s", "level": "VERBOSE", @@ -631,6 +649,12 @@ "group": "WM_DEBUG_ADD_REMOVE", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, + "-1471518109": { + "message": "Set animatingExit: reason=onAppVisibilityChanged win=%s", + "level": "DEBUG", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "-1468740466": { "message": "Moving to PAUSED: %s (starting in paused state)", "level": "VERBOSE", @@ -769,6 +793,12 @@ "group": "WM_DEBUG_CONTENT_RECORDING", "at": "com\/android\/server\/wm\/ContentRecorder.java" }, + "-1318478129": { + "message": "applyAnimation: win=%s anim=%d attr=0x%x a=%s transit=%d type=%d isEntrance=%b Callers %s", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowStateAnimator.java" + }, "-1311436264": { "message": "Unregister task fragment organizer=%s uid=%d pid=%d", "level": "VERBOSE", @@ -799,12 +829,24 @@ "group": "WM_DEBUG_TASKS", "at": "com\/android\/server\/wm\/ActivityStarter.java" }, + "-1303628829": { + "message": "**** STARTING EXIT", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/DisplayPolicy.java" + }, "-1292329638": { "message": "Added starting %s: startingWindow=%s startingView=%s", "level": "VERBOSE", "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, + "-1288007399": { + "message": "performShowLocked: mDrawState=HAS_DRAWN in %s", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "-1270731689": { "message": "Attempted to set replacing window on app token with no content %s", "level": "WARN", @@ -853,6 +895,12 @@ "group": "WM_DEBUG_RECENTS_ANIMATIONS", "at": "com\/android\/server\/wm\/RecentsAnimationController.java" }, + "-1209252064": { + "message": "Clear animatingExit: reason=clearAnimatingFlags win=%s", + "level": "DEBUG", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "-1207757583": { "message": "startAnimation(): Notify animation start: %s", "level": "DEBUG", @@ -1237,6 +1285,12 @@ "group": "WM_DEBUG_CONFIGURATION", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, + "-799003045": { + "message": "Set animatingExit: reason=remove\/replaceWindow win=%s", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "-784959154": { "message": "Attempted to add private presentation window to a non-private display. Aborting.", "level": "WARN", @@ -1699,6 +1753,12 @@ "group": "WM_DEBUG_WINDOW_TRANSITIONS", "at": "com\/android\/server\/wm\/Transition.java" }, + "-347866078": { + "message": "Setting move animation on %s", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "-344488673": { "message": "Finishing drawing window %s: mDrawState=%s", "level": "VERBOSE", @@ -1723,6 +1783,12 @@ "group": "WM_DEBUG_ADD_REMOVE", "at": "com\/android\/server\/wm\/WindowState.java" }, + "-319689203": { + "message": "Reparenting to original parent: %s for %s", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/SurfaceAnimator.java" + }, "-317761482": { "message": "Create sleep token: tag=%s, displayId=%d", "level": "DEBUG", @@ -1831,6 +1897,18 @@ "group": "WM_DEBUG_APP_TRANSITIONS", "at": "com\/android\/server\/wm\/WindowState.java" }, + "-208664771": { + "message": "Reparenting to leash for %s", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/SurfaceAnimator.java" + }, + "-203358733": { + "message": "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW %s", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowStateAnimator.java" + }, "-198463978": { "message": "updateRotationUnchecked: alwaysSendConfiguration=%b forceRelayout=%b", "level": "VERBOSE", @@ -1927,6 +2005,12 @@ "group": "WM_DEBUG_RECENTS_ANIMATIONS", "at": "com\/android\/server\/wm\/RecentsAnimation.java" }, + "-91393839": { + "message": "Set animatingExit: reason=remove\/applyAnimation win=%s", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "-90559682": { "message": "Config is skipping already pausing %s", "level": "VERBOSE", @@ -1993,6 +2077,12 @@ "group": "WM_DEBUG_APP_TRANSITIONS_ANIM", "at": "com\/android\/server\/wm\/WindowContainer.java" }, + "-32102932": { + "message": "Error sending initial configuration change to WindowContainer overlay", + "level": "ERROR", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowContainer.java" + }, "-23020844": { "message": "Back: Reset surfaces", "level": "DEBUG", @@ -2227,6 +2317,12 @@ "group": "WM_DEBUG_RECENTS_ANIMATIONS", "at": "com\/android\/server\/wm\/Task.java" }, + "215077284": { + "message": "Animation start delayed for %s", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/SurfaceAnimator.java" + }, "221540118": { "message": "mUserActivityTimeout set to %d", "level": "DEBUG", @@ -2317,6 +2413,12 @@ "group": "WM_DEBUG_APP_TRANSITIONS_ANIM", "at": "com\/android\/server\/wm\/AppTransition.java" }, + "283489582": { + "message": "Clear animatingExit: reason=exitAnimationDone win=%s", + "level": "DEBUG", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "288485303": { "message": "Attempted to set remove mode to a display that does not exist: %d", "level": "WARN", @@ -2389,6 +2491,12 @@ "group": "WM_DEBUG_STATES", "at": "com\/android\/server\/wm\/TaskFragment.java" }, + "341360111": { + "message": "selectAnimation in %s: transit=%d", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/DisplayPolicy.java" + }, "342460966": { "message": "DRAG %s: pos=(%d,%d)", "level": "INFO", @@ -2455,6 +2563,12 @@ "group": "WM_DEBUG_STATES", "at": "com\/android\/server\/wm\/TaskFragment.java" }, + "385595355": { + "message": "Starting animation on %s: type=%d, anim=%s", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowContainer.java" + }, "397105698": { "message": "grantEmbeddedWindowFocus remove request for win=%s dropped since no candidate was found", "level": "VERBOSE", @@ -2467,6 +2581,12 @@ "group": "WM_DEBUG_STATES", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, + "397862437": { + "message": "Cancelling animation restarting=%b for %s", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/SurfaceAnimator.java" + }, "399841913": { "message": "SURFACE RECOVER DESTROY: %s", "level": "INFO", @@ -2833,6 +2953,12 @@ "group": "WM_DEBUG_RECENTS_ANIMATIONS", "at": "com\/android\/server\/wm\/RecentsAnimation.java" }, + "769218938": { + "message": "Loaded animation %s for %s, duration: %d, stack=%s", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowContainer.java" + }, "778774915": { "message": "Unable to record task since feature is disabled %d", "level": "VERBOSE", @@ -2989,6 +3115,12 @@ "group": "WM_DEBUG_REMOTE_ANIMATIONS", "at": "com\/android\/server\/wm\/RemoteAnimationController.java" }, + "975275467": { + "message": "Set animatingExit: reason=remove\/isAnimating win=%s", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "979347997": { "message": "Launch on display check: disallow activity embedding without permission.", "level": "DEBUG", @@ -3157,6 +3289,12 @@ "group": "WM_DEBUG_WINDOW_ORGANIZER", "at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java" }, + "1164325516": { + "message": "onExitAnimationDone in %s: exiting=%b remove=%b selfAnimating=%b anim=%s", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "1166381079": { "message": "Execute app transition: %s, displayId: %d Callers=%s", "level": "WARN", @@ -3301,6 +3439,12 @@ "group": "WM_DEBUG_WINDOW_TRANSITIONS", "at": "com\/android\/server\/wm\/TransitionController.java" }, + "1335791109": { + "message": "createSurface %s: mDrawState=DRAW_PENDING", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowStateAnimator.java" + }, "1337596507": { "message": "Sending to proc %s new compat %s", "level": "VERBOSE", @@ -3715,6 +3859,12 @@ "group": "WM_DEBUG_APP_TRANSITIONS", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, + "1810209625": { + "message": "Animation done in %s: exiting=%b, reportedVisible=%b", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowStateAnimator.java" + }, "1822314934": { "message": "Expected target rootTask=%s to restored behind rootTask=%s but it is behind rootTask=%s", "level": "WARN", @@ -3793,6 +3943,12 @@ "group": "WM_DEBUG_WINDOW_ORGANIZER", "at": "com\/android\/server\/wm\/DisplayAreaPolicyBuilder.java" }, + "1878927091": { + "message": "prepareSurface: No changes in animation for %s", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowStateAnimator.java" + }, "1891501279": { "message": "cancelAnimation(): reason=%s", "level": "DEBUG", @@ -3895,6 +4051,12 @@ "group": "WM_DEBUG_FOCUS_LIGHT", "at": "com\/android\/server\/wm\/InputMonitor.java" }, + "2010476671": { + "message": "Animation done in %s: reportedVisible=%b okToDisplay=%b okToAnimate=%b startingDisplayed=%b", + "level": "VERBOSE", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/ActivityRecord.java" + }, "2018454757": { "message": "WS.removeImmediately: %s Already removed...", "level": "VERBOSE", @@ -3907,6 +4069,12 @@ "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, + "2019765997": { + "message": "selectRotationAnimation topFullscreen=%s rotationAnimation=%d forceJumpcut=%b", + "level": "INFO", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/DisplayRotation.java" + }, "2022422429": { "message": "createAnimationAdapter(): container=%s", "level": "DEBUG", @@ -3961,6 +4129,12 @@ "group": "WM_DEBUG_WINDOW_INSETS", "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" }, + "2075693141": { + "message": "Set animatingExit: reason=startExitingAnimation\/%s win=%s", + "level": "DEBUG", + "group": "WM_DEBUG_ANIM", + "at": "com\/android\/server\/wm\/WindowManagerService.java" + }, "2083556954": { "message": "Set mOrientationChanging of %s", "level": "VERBOSE", @@ -4020,6 +4194,9 @@ "WM_DEBUG_ADD_REMOVE": { "tag": "WindowManager" }, + "WM_DEBUG_ANIM": { + "tag": "WindowManager" + }, "WM_DEBUG_APP_TRANSITIONS": { "tag": "WindowManager" }, diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 4bef126ee2c8..2c9372e7eaca 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -116,6 +116,7 @@ import static android.view.WindowManager.TRANSIT_FLAG_OPEN_BEHIND; import static android.view.WindowManager.TRANSIT_OLD_UNSET; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ADD_REMOVE; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION; @@ -216,7 +217,6 @@ import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN; import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS; import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION; import static com.android.server.wm.WindowContainerChildProto.ACTIVITY; -import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_CONFIGURATION; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STARTING_WINDOW_VERBOSE; @@ -7237,11 +7237,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A getDisplayContent().computeImeTargetIfNeeded(this); - if (DEBUG_ANIM) Slog.v(TAG, "Animation done in " + this - + ": reportedVisible=" + reportedVisible - + " okToDisplay=" + okToDisplay() - + " okToAnimate=" + okToAnimate() - + " startingDisplayed=" + startingDisplayed); + ProtoLog.v(WM_DEBUG_ANIM, "Animation done in %s" + + ": reportedVisible=%b okToDisplay=%b okToAnimate=%b startingDisplayed=%b", + this, reportedVisible, okToDisplay(), okToAnimate(), startingDisplayed); // clean up thumbnail window if (mThumbnail != null) { diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index f708a7fa5bb9..5c09f09d9313 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -81,11 +81,11 @@ import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpe import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpenExitAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenEnterAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenExitAnimation; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS_ANIM; import static com.android.server.wm.AppTransitionProto.APP_TRANSITION_STATE; import static com.android.server.wm.AppTransitionProto.LAST_USED_APP_TRANSITION; -import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; 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.WindowManagerInternal.AppTransitionListener; @@ -130,6 +130,7 @@ import android.view.animation.TranslateAnimation; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.policy.TransitionAnimation; +import com.android.internal.protolog.ProtoLogImpl; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.DumpUtils.Dump; import com.android.internal.util.function.pooled.PooledLambda; @@ -237,7 +238,8 @@ public class AppTransition implements Dump { mService = service; mHandler = new Handler(service.mH.getLooper()); mDisplayContent = displayContent; - mTransitionAnimation = new TransitionAnimation(context, DEBUG_ANIM, TAG); + mTransitionAnimation = new TransitionAnimation( + context, ProtoLogImpl.isEnabled(WM_DEBUG_ANIM), TAG); mGridLayoutRecentsEnabled = SystemProperties.getBoolean("ro.recents.grid", false); diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 88d7dff4ff1a..4573ede13f7f 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -75,6 +75,7 @@ import static android.view.WindowManagerPolicyConstants.NAV_BAR_LEFT; import static android.view.WindowManagerPolicyConstants.NAV_BAR_RIGHT; import static android.window.DisplayAreaOrganizer.FEATURE_UNDEFINED; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_SCREEN_ON; import static com.android.server.policy.PhoneWindowManager.TOAST_WINDOW_TIMEOUT; import static com.android.server.policy.WindowManagerPolicy.TRANSIT_ENTER; @@ -83,7 +84,6 @@ import static com.android.server.policy.WindowManagerPolicy.TRANSIT_HIDE; import static com.android.server.policy.WindowManagerPolicy.TRANSIT_PREVIEW_DONE; import static com.android.server.policy.WindowManagerPolicy.TRANSIT_SHOW; import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.LID_ABSENT; -import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; @@ -1366,8 +1366,7 @@ public class DisplayPolicy { * @return Resource ID of the actual animation to use, or {@link #ANIMATION_NONE} for none. */ int selectAnimation(WindowState win, int transit) { - if (DEBUG_ANIM) Slog.i(TAG, "selectAnimation in " + win - + ": transit=" + transit); + ProtoLog.i(WM_DEBUG_ANIM, "selectAnimation in %s: transit=%d", win, transit); if (win == mStatusBar) { if (transit == TRANSIT_EXIT || transit == TRANSIT_HIDE) { @@ -1460,7 +1459,7 @@ public class DisplayPolicy { // with old content because home is easier to have different UI states. return ANIMATION_NONE; } - if (DEBUG_ANIM) Slog.i(TAG, "**** STARTING EXIT"); + ProtoLog.i(WM_DEBUG_ANIM, "**** STARTING EXIT"); return R.anim.app_starting_exit; } } diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java index 262ddae02765..43ff58083657 100644 --- a/services/core/java/com/android/server/wm/DisplayRotation.java +++ b/services/core/java/com/android/server/wm/DisplayRotation.java @@ -24,6 +24,7 @@ import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_JUMPCUT import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_ROTATE; import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ORIENTATION; import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.LID_OPEN; import static com.android.server.wm.DisplayRotationProto.FIXED_TO_USER_ROTATION_MODE; @@ -32,7 +33,6 @@ import static com.android.server.wm.DisplayRotationProto.IS_FIXED_TO_USER_ROTATI import static com.android.server.wm.DisplayRotationProto.LAST_ORIENTATION; import static com.android.server.wm.DisplayRotationProto.ROTATION; import static com.android.server.wm.DisplayRotationProto.USER_ROTATION; -import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; 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.WINDOWS_FREEZING_SCREENS_ACTIVE; @@ -747,10 +747,11 @@ public class DisplayRotation { final boolean forceJumpcut = !mDisplayPolicy.isScreenOnFully() || !mService.mPolicy.okToAnimate(false /* ignoreScreenOn */); final WindowState topFullscreen = mDisplayPolicy.getTopFullscreenOpaqueWindow(); - if (DEBUG_ANIM) Slog.i(TAG, "selectRotationAnimation topFullscreen=" - + topFullscreen + " rotationAnimation=" - + (topFullscreen == null ? 0 : topFullscreen.getAttrs().rotationAnimation) - + " forceJumpcut=" + forceJumpcut); + ProtoLog.i(WM_DEBUG_ANIM, "selectRotationAnimation topFullscreen=%s" + + " rotationAnimation=%d forceJumpcut=%b", + topFullscreen, + topFullscreen == null ? 0 : topFullscreen.getAttrs().rotationAnimation, + forceJumpcut); if (forceJumpcut) { mTmpRotationAnim.mExit = R.anim.rotation_animation_jump_exit; mTmpRotationAnim.mEnter = R.anim.rotation_animation_enter; diff --git a/services/core/java/com/android/server/wm/RemoteAnimationController.java b/services/core/java/com/android/server/wm/RemoteAnimationController.java index eeac230489f9..992778794203 100644 --- a/services/core/java/com/android/server/wm/RemoteAnimationController.java +++ b/services/core/java/com/android/server/wm/RemoteAnimationController.java @@ -110,7 +110,7 @@ class RemoteAnimationController implements DeathRecipient { ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "goodToGo(): Animation canceled already"); onAnimationFinished(); - invokeAnimationCancelled(); + invokeAnimationCancelled("already_cancelled"); return; } @@ -129,7 +129,7 @@ class RemoteAnimationController implements DeathRecipient { "goodToGo(): No apps to animate, mPendingAnimations=%d", mPendingAnimations.size()); onAnimationFinished(); - invokeAnimationCancelled(); + invokeAnimationCancelled("no_app_targets"); return; } @@ -169,7 +169,7 @@ class RemoteAnimationController implements DeathRecipient { mCanceled = true; } onAnimationFinished(); - invokeAnimationCancelled(); + invokeAnimationCancelled(reason); } private void writeStartDebugStatement() { @@ -296,7 +296,8 @@ class RemoteAnimationController implements DeathRecipient { ProtoLog.i(WM_DEBUG_REMOTE_ANIMATIONS, "Finishing remote animation"); } - private void invokeAnimationCancelled() { + private void invokeAnimationCancelled(String reason) { + ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "cancelAnimation(): reason=%s", reason); try { mRemoteAnimationAdapter.getRunner().onAnimationCancelled(); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/wm/SurfaceAnimator.java b/services/core/java/com/android/server/wm/SurfaceAnimator.java index 53e33781bca6..fbf04262cc37 100644 --- a/services/core/java/com/android/server/wm/SurfaceAnimator.java +++ b/services/core/java/com/android/server/wm/SurfaceAnimator.java @@ -16,10 +16,10 @@ package com.android.server.wm; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; import static com.android.server.wm.SurfaceAnimatorProto.ANIMATION_ADAPTER; import static com.android.server.wm.SurfaceAnimatorProto.ANIMATION_START_DELAYED; import static com.android.server.wm.SurfaceAnimatorProto.LEASH; -import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; @@ -32,8 +32,11 @@ import android.view.SurfaceControl; import android.view.SurfaceControl.Transaction; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.protolog.ProtoLogImpl; +import com.android.internal.protolog.common.ProtoLog; import java.io.PrintWriter; +import java.io.StringWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.function.Supplier; @@ -185,10 +188,16 @@ class SurfaceAnimator { } mAnimatable.onLeashAnimationStarting(t, mLeash); if (mAnimationStartDelayed) { - if (DEBUG_ANIM) Slog.i(TAG, "Animation start delayed"); + ProtoLog.i(WM_DEBUG_ANIM, "Animation start delayed for %s", mAnimatable); return; } mAnimation.startAnimation(mLeash, t, type, mInnerAnimationFinishedCallback); + if (ProtoLogImpl.isEnabled(WM_DEBUG_ANIM)) { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + mAnimation.dump(pw, ""); + ProtoLog.d(WM_DEBUG_ANIM, "Animation start for %s, anim=%s", mAnimatable, sw); + } if (snapshotAnim != null) { mSnapshot = freezer.takeSnapshotForAnimation(); if (mSnapshot == null) { @@ -340,7 +349,8 @@ class SurfaceAnimator { * to another animator. */ private void cancelAnimation(Transaction t, boolean restarting, boolean forwardCancel) { - if (DEBUG_ANIM) Slog.i(TAG, "Cancelling animation restarting=" + restarting); + ProtoLog.i(WM_DEBUG_ANIM, "Cancelling animation restarting=%b for %s", + restarting, mAnimatable); final SurfaceControl leash = mLeash; final AnimationAdapter animation = mAnimation; final @AnimationType int animationType = mAnimationType; @@ -419,7 +429,8 @@ class SurfaceAnimator { final boolean reparent = surface != null && (curAnimationLeash == null || curAnimationLeash.equals(leash)); if (reparent) { - if (DEBUG_ANIM) Slog.i(TAG, "Reparenting to original parent: " + parent); + ProtoLog.i(WM_DEBUG_ANIM, "Reparenting to original parent: %s for %s", + parent, animatable); // We shouldn't really need these isValid checks but we do // b/130364451 if (surface.isValid() && parent != null && parent.isValid()) { @@ -444,7 +455,7 @@ class SurfaceAnimator { static SurfaceControl createAnimationLeash(Animatable animatable, SurfaceControl surface, Transaction t, @AnimationType int type, int width, int height, int x, int y, boolean hidden, Supplier<Transaction> transactionFactory) { - if (DEBUG_ANIM) Slog.i(TAG, "Reparenting to leash"); + ProtoLog.i(WM_DEBUG_ANIM, "Reparenting to leash for %s", animatable); final SurfaceControl.Builder builder = animatable.makeAnimationLeash() .setParent(animatable.getAnimationLeashParent()) .setName(surface + " - animation-leash of " + animationTypeToString(type)) diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 5b39a9980c37..99e39f1969e1 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -33,6 +33,7 @@ import static android.view.SurfaceControl.Transaction; import static android.view.WindowManager.LayoutParams.INVALID_WINDOW_TYPE; import static android.view.WindowManager.TRANSIT_CHANGE; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ORIENTATION; @@ -58,10 +59,8 @@ import static com.android.server.wm.WindowContainerProto.SURFACE_ANIMATOR; import static com.android.server.wm.WindowContainerProto.SURFACE_CONTROL; import static com.android.server.wm.WindowContainerProto.VISIBLE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG; -import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; 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.logWithStack; import static com.android.server.wm.WindowStateAnimator.ROOT_TASK_CLIP_AFTER_ANIM; import android.annotation.CallSuper; @@ -106,6 +105,7 @@ import android.window.WindowContainerToken; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.graphics.ColorUtils; +import com.android.internal.protolog.ProtoLogImpl; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.ToBooleanFunction; import com.android.server.wm.SurfaceAnimator.Animatable; @@ -2726,9 +2726,8 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< @Nullable OnAnimationFinishedCallback animationFinishedCallback, @Nullable Runnable animationCancelledCallback, @Nullable AnimationAdapter snapshotAnim) { - if (DEBUG_ANIM) { - Slog.v(TAG, "Starting animation on " + this + ": type=" + type + ", anim=" + anim); - } + ProtoLog.v(WM_DEBUG_ANIM, "Starting animation on %s: type=%d, anim=%s", + this, type, anim); // TODO: This should use isVisible() but because isVisible has a really weird meaning at // the moment this doesn't work for all animatable window containers. @@ -3097,9 +3096,9 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< // ActivityOption#makeCustomAnimation or WindowManager#overridePendingTransition. a.restrictDuration(MAX_APP_TRANSITION_DURATION); } - if (DEBUG_ANIM) { - logWithStack(TAG, "Loaded animation " + a + " for " + this - + ", duration: " + ((a != null) ? a.getDuration() : 0)); + if (ProtoLogImpl.isEnabled(WM_DEBUG_ANIM)) { + ProtoLog.i(WM_DEBUG_ANIM, "Loaded animation %s for %s, duration: %d, stack=%s", + a, this, ((a != null) ? a.getDuration() : 0), Debug.getCallers(20)); } final int containingWidth = frame.width(); final int containingHeight = frame.height(); @@ -3871,7 +3870,8 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< try { overlay.getRemoteInterface().onConfigurationChanged(getConfiguration()); } catch (Exception e) { - Slog.e(TAG, "Error sending initial configuration change to WindowContainer overlay"); + ProtoLog.e(WM_DEBUG_ANIM, + "Error sending initial configuration change to WindowContainer overlay"); removeTrustedOverlay(overlay); } } diff --git a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java index c95470071e2d..42b556f77ab6 100644 --- a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java +++ b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java @@ -34,7 +34,6 @@ public class WindowManagerDebugConfig { static final String TAG_WM = "WindowManager"; static final boolean DEBUG = false; - static final boolean DEBUG_ANIM = false; static final boolean DEBUG_LAYOUT = false; static final boolean DEBUG_LAYERS = false; static final boolean DEBUG_INPUT = false; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 29e292da5697..dd2941c75346 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -97,6 +97,7 @@ import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ER import static android.window.WindowProviderService.isWindowProviderService; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ADD_REMOVE; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_BOOT; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS_LIGHT; @@ -2560,7 +2561,9 @@ public class WindowManagerService extends IWindowManager.Stub transit = WindowManagerPolicy.TRANSIT_PREVIEW_DONE; } + String reason = null; if (win.isWinVisibleLw() && winAnimator.applyAnimationLocked(transit, false)) { + reason = "applyAnimation"; focusMayChange = true; win.mAnimatingExit = true; } else if (win.mDisplayContent.okToAnimate() && win.isExitAnimationRunningSelfOrParent()) { @@ -2570,6 +2573,7 @@ public class WindowManagerService extends IWindowManager.Stub } else if (win.mDisplayContent.okToAnimate() && win.mDisplayContent.mWallpaperController.isWallpaperTarget(win) && win.mAttrs.type != TYPE_NOTIFICATION_SHADE) { + reason = "isWallpaperTarget"; // If the wallpaper is currently behind this app window, we need to change both of them // inside of a transaction to avoid artifacts. // For NotificationShade, sysui is in charge of running window animation and it updates @@ -2585,6 +2589,10 @@ public class WindowManagerService extends IWindowManager.Stub win.mDestroying = true; win.destroySurface(false, stopped); } + if (reason != null) { + ProtoLog.d(WM_DEBUG_ANIM, "Set animatingExit: reason=startExitingAnimation/%s win=%s", + reason, win); + } if (mAccessibilityController.hasCallbacks()) { mAccessibilityController.onWindowTransition(win, transit); } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 65cbcb123982..0ca1058a80b2 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -106,6 +106,7 @@ import static android.view.WindowManagerPolicyConstants.TYPE_LAYER_MULTIPLIER; import static android.view.WindowManagerPolicyConstants.TYPE_LAYER_OFFSET; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ADD_REMOVE; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_BACK_PREVIEW; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS; @@ -140,7 +141,6 @@ import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS; import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION; import static com.android.server.wm.WindowContainerChildProto.WINDOW; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG; -import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_CONFIGURATION; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT_METHOD; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_POWER; @@ -252,6 +252,7 @@ import android.window.IOnBackInvokedCallback; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.policy.KeyInterceptionInfo; +import com.android.internal.protolog.ProtoLogImpl; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.ToBooleanFunction; @@ -262,6 +263,7 @@ import com.android.server.wm.SurfaceAnimator.AnimationType; import dalvik.annotation.optimization.NeverCompile; import java.io.PrintWriter; +import java.io.StringWriter; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Collection; @@ -2241,6 +2243,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // Mark all relevant flags for that onExitAnimationDone will proceed all the way // to actually remove it. if (!visible && isVisibleNow && mActivityRecord.isAnimating(PARENTS | TRANSITION)) { + ProtoLog.d(WM_DEBUG_ANIM, + "Set animatingExit: reason=onAppVisibilityChanged win=%s", this); mAnimatingExit = true; mRemoveOnExit = true; mWindowRemovalAllowed = true; @@ -2580,6 +2584,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // been removed. We probably need another flag to indicate that window removal // should be deffered vs. overloading the flag that says we are playing an exit // animation. + ProtoLog.v(WM_DEBUG_ANIM, + "Set animatingExit: reason=remove/replaceWindow win=%s", this); mAnimatingExit = true; mReplacingRemoveRequested = true; return; @@ -2608,6 +2614,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // Try starting an animation. if (mWinAnimator.applyAnimationLocked(transit, false)) { + ProtoLog.v(WM_DEBUG_ANIM, + "Set animatingExit: reason=remove/applyAnimation win=%s", this); mAnimatingExit = true; // mAnimatingExit affects canAffectSystemUiFlags(). Run layout such that @@ -2634,6 +2642,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // The exit animation is running or should run... wait for it! ProtoLog.v(WM_DEBUG_ADD_REMOVE, "Not removing %s due to exit animation", this); + ProtoLog.v(WM_DEBUG_ANIM, "Set animatingExit: reason=remove/isAnimating win=%s", + this); setupWindowForRemoveOnExit(); if (mActivityRecord != null) { mActivityRecord.updateReportedVisibilityLocked(); @@ -3593,6 +3603,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // Clear animating flags now, since the surface is now gone. (Note this is true even // if the surface is saved, to outside world the surface is still NO_SURFACE.) mAnimatingExit = false; + ProtoLog.d(WM_DEBUG_ANIM, "Clear animatingExit: reason=destroySurface win=%s", this); if (useBLASTSync()) { immediatelyNotifyBlastSync(); @@ -4663,8 +4674,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // Force the show in the next prepareSurfaceLocked() call. mWinAnimator.mLastAlpha = -1; - if (DEBUG_ANIM) Slog.v(TAG, - "performShowLocked: mDrawState=HAS_DRAWN in " + this); + ProtoLog.v(WM_DEBUG_ANIM, "performShowLocked: mDrawState=HAS_DRAWN in %s", this); mWinAnimator.mDrawState = HAS_DRAWN; mWmService.scheduleAnimationLocked(); @@ -5047,9 +5057,17 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } void onExitAnimationDone() { - if (DEBUG_ANIM) Slog.v(TAG, "onExitAnimationDone in " + this - + ": exiting=" + mAnimatingExit + " remove=" + mRemoveOnExit - + " selfAnimating=" + isAnimating()); + if (ProtoLogImpl.isEnabled(WM_DEBUG_ANIM)) { + final AnimationAdapter animationAdapter = mSurfaceAnimator.getAnimation(); + StringWriter sw = new StringWriter(); + if (animationAdapter != null) { + PrintWriter pw = new PrintWriter(sw); + animationAdapter.dump(pw, ""); + } + ProtoLog.v(WM_DEBUG_ANIM, "onExitAnimationDone in %s" + + ": exiting=%b remove=%b selfAnimating=%b anim=%s", + this, mAnimatingExit, mRemoveOnExit, isAnimating(), sw); + } if (!mChildren.isEmpty()) { // Copying to a different list as multiple children can be removed. @@ -5103,6 +5121,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } } mAnimatingExit = false; + ProtoLog.d(WM_DEBUG_ANIM, "Clear animatingExit: reason=exitAnimationDone win=%s", this); getDisplayContent().mWallpaperController.hideWallpapers(this); } @@ -5134,6 +5153,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // show up with wrong position or scale. if (mAnimatingExit) { mAnimatingExit = false; + ProtoLog.d(WM_DEBUG_ANIM, "Clear animatingExit: reason=clearAnimatingFlags win=%s", + this); didSomething = true; } if (mDestroying) { @@ -5208,6 +5229,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP cancelAnimation(); } mAnimatingExit = false; + ProtoLog.d(WM_DEBUG_ANIM, "Clear animatingExit: reason=relayoutVisibleWindow win=%s", + this); } if (mDestroying) { mDestroying = false; @@ -5292,7 +5315,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return; } - if (DEBUG_ANIM) Slog.v(TAG, "Setting move animation on " + this); + ProtoLog.v(WM_DEBUG_ANIM, "Setting move animation on %s", this); final Point oldPosition = new Point(); final Point newPosition = new Point(); transformFrameToSurfacePosition(mWindowFrames.mLastFrame.left, mWindowFrames.mLastFrame.top, diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 285a6d5bdf5f..5c0557f2d1f4 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -23,6 +23,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.TRANSIT_OLD_NONE; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_DRAW; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ORIENTATION; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_STARTING_WINDOW; @@ -34,7 +35,6 @@ import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMAT import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS; import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG; -import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STARTING_WINDOW_VERBOSE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY; @@ -60,6 +60,7 @@ import android.view.WindowManager.LayoutParams; import android.view.animation.Animation; import android.view.animation.AnimationUtils; +import com.android.internal.protolog.ProtoLogImpl; import com.android.internal.protolog.common.ProtoLog; import com.android.server.policy.WindowManagerPolicy; @@ -178,10 +179,9 @@ class WindowStateAnimator { void onAnimationFinished() { // Done animating, clean up. - if (DEBUG_ANIM) Slog.v( - TAG, "Animation done in " + this + ": exiting=" + mWin.mAnimatingExit - + ", reportedVisible=" - + (mWin.mActivityRecord != null && mWin.mActivityRecord.reportedVisible)); + ProtoLog.v(WM_DEBUG_ANIM, "Animation done in %s: exiting=%b, reportedVisible=%b", + this, mWin.mAnimatingExit, + (mWin.mActivityRecord != null && mWin.mActivityRecord.reportedVisible)); mWin.checkPolicyVisibilityChange(); final DisplayContent displayContent = mWin.getDisplayContent(); @@ -264,9 +264,8 @@ class WindowStateAnimator { if (mDrawState != COMMIT_DRAW_PENDING && mDrawState != READY_TO_SHOW) { return false; } - if (DEBUG_ANIM) { - Slog.i(TAG, "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW " + mSurfaceController); - } + ProtoLog.i(WM_DEBUG_ANIM, "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW %s", + mSurfaceController); mDrawState = READY_TO_SHOW; boolean result = false; final ActivityRecord activity = mWin.mActivityRecord; @@ -298,9 +297,7 @@ class WindowStateAnimator { w.setHasSurface(false); - if (DEBUG_ANIM) { - Slog.i(TAG, "createSurface " + this + ": mDrawState=DRAW_PENDING"); - } + ProtoLog.i(WM_DEBUG_ANIM, "createSurface %s: mDrawState=DRAW_PENDING", this); resetDrawState(); @@ -503,8 +500,8 @@ class WindowStateAnimator { } } } else { - if (DEBUG_ANIM && mWin.isAnimating(TRANSITION | PARENTS)) { - Slog.v(TAG, "prepareSurface: No changes in animation for " + this); + if (mWin.isAnimating(TRANSITION | PARENTS)) { + ProtoLog.v(WM_DEBUG_ANIM, "prepareSurface: No changes in animation for %s", this); } } @@ -646,15 +643,12 @@ class WindowStateAnimator { mWin.mAttrs, attr, TRANSIT_OLD_NONE); } } - if (DEBUG_ANIM) Slog.v(TAG, - "applyAnimation: win=" + this - + " anim=" + anim + " attr=0x" + Integer.toHexString(attr) - + " a=" + a - + " transit=" + transit - + " type=" + mAttrType - + " isEntrance=" + isEntrance + " Callers " + Debug.getCallers(3)); + if (ProtoLogImpl.isEnabled(WM_DEBUG_ANIM)) { + ProtoLog.v(WM_DEBUG_ANIM, "applyAnimation: win=%s" + + " anim=%d attr=0x%x a=%s transit=%d type=%d isEntrance=%b Callers %s", + this, anim, attr, a, transit, mAttrType, isEntrance, Debug.getCallers(20)); + } if (a != null) { - if (DEBUG_ANIM) logWithStack(TAG, "Loaded animation " + a + " for " + this); Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "WSA#startAnimation"); mWin.startAnimation(a); Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); |