Merge "More debugging for issue #7343200 Fails to show wallpaper in the..." into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b9372de07d
@ -279,22 +279,22 @@ public class AppWindowAnimator {
|
||||
return isAnimating;
|
||||
}
|
||||
|
||||
void dump(PrintWriter pw, String prefix) {
|
||||
if (freezingScreen) {
|
||||
pw.print(prefix); pw.print(" freezingScreen="); pw.println(freezingScreen);
|
||||
}
|
||||
void dump(PrintWriter pw, String prefix, boolean dumpAll) {
|
||||
pw.print(prefix); pw.print("mAppToken="); pw.println(mAppToken);
|
||||
pw.print(prefix); pw.print("mAnimator="); pw.println(mAnimator);
|
||||
pw.print(prefix); pw.print("freezingScreen="); pw.print(freezingScreen);
|
||||
pw.print(" allDrawn="); pw.print(allDrawn);
|
||||
pw.print(" animLayerAdjustment="); pw.println(animLayerAdjustment);
|
||||
if (animating || animation != null) {
|
||||
pw.print(prefix); pw.print("animating="); pw.print(animating);
|
||||
pw.print(" animation="); pw.println(animation);
|
||||
pw.print(" animInitialized="); pw.println(animInitialized);
|
||||
pw.print(prefix); pw.print("animation="); pw.println(animation);
|
||||
}
|
||||
if (hasTransformation) {
|
||||
pw.print(prefix); pw.print("XForm: ");
|
||||
transformation.printShortString(pw);
|
||||
pw.println();
|
||||
}
|
||||
if (animLayerAdjustment != 0) {
|
||||
pw.print(prefix); pw.print("animLayerAdjustment="); pw.println(animLayerAdjustment);
|
||||
}
|
||||
if (thumbnail != null) {
|
||||
pw.print(prefix); pw.print("thumbnail="); pw.print(thumbnail);
|
||||
pw.print(" x="); pw.print(thumbnailX);
|
||||
@ -304,6 +304,11 @@ public class AppWindowAnimator {
|
||||
pw.print(prefix); pw.print("thumbnailTransformation=");
|
||||
pw.println(thumbnailTransformation.toShortString());
|
||||
}
|
||||
for (int i=0; i<mAllAppWinAnimators.size(); i++) {
|
||||
WindowStateAnimator wanim = mAllAppWinAnimators.get(i);
|
||||
pw.print(prefix); pw.print("App Win Anim #"); pw.print(i);
|
||||
pw.print(": "); pw.println(wanim);
|
||||
}
|
||||
}
|
||||
|
||||
// This is an animation that does nothing: it just immediately finishes
|
||||
|
@ -18,12 +18,14 @@ import android.util.Log;
|
||||
import android.util.Slog;
|
||||
import android.util.SparseArray;
|
||||
import android.util.SparseIntArray;
|
||||
import android.util.TimeUtils;
|
||||
import android.view.Display;
|
||||
import android.view.Surface;
|
||||
import android.view.WindowManagerPolicy;
|
||||
import android.view.animation.Animation;
|
||||
|
||||
import com.android.server.wm.WindowManagerService.AppWindowAnimParams;
|
||||
import com.android.server.wm.WindowManagerService.LayoutFields;
|
||||
import com.android.server.wm.WindowManagerService.LayoutToAnimatorParams;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@ -197,6 +199,15 @@ public class WindowAnimator {
|
||||
mWallpaperTokens = new ArrayList<WindowToken>(layoutToAnim.mWallpaperTokens);
|
||||
}
|
||||
|
||||
if (WindowManagerService.DEBUG_WALLPAPER_LIGHT) {
|
||||
if (mWallpaperTarget != layoutToAnim.mWallpaperTarget
|
||||
|| mLowerWallpaperTarget != layoutToAnim.mLowerWallpaperTarget
|
||||
|| mUpperWallpaperTarget != layoutToAnim.mUpperWallpaperTarget) {
|
||||
Slog.d(TAG, "Updating anim wallpaper: target=" + mWallpaperTarget
|
||||
+ " lower=" + mLowerWallpaperTarget + " upper="
|
||||
+ mUpperWallpaperTarget);
|
||||
}
|
||||
}
|
||||
mWallpaperTarget = layoutToAnim.mWallpaperTarget;
|
||||
mWpAppAnimator = mWallpaperTarget == null
|
||||
? null : mWallpaperTarget.mAppToken == null
|
||||
@ -735,45 +746,143 @@ public class WindowAnimator {
|
||||
return dimParams != null && dimParams.mDimWinAnimator == winAnimator;
|
||||
}
|
||||
|
||||
static String bulkUpdateParamsToString(int bulkUpdateParams) {
|
||||
StringBuilder builder = new StringBuilder(128);
|
||||
if ((bulkUpdateParams & LayoutFields.SET_UPDATE_ROTATION) != 0) {
|
||||
builder.append(" UPDATE_ROTATION");
|
||||
}
|
||||
if ((bulkUpdateParams & LayoutFields.SET_WALLPAPER_MAY_CHANGE) != 0) {
|
||||
builder.append(" WALLPAPER_MAY_CHANGE");
|
||||
}
|
||||
if ((bulkUpdateParams & LayoutFields.SET_FORCE_HIDING_CHANGED) != 0) {
|
||||
builder.append(" FORCE_HIDING_CHANGED");
|
||||
}
|
||||
if ((bulkUpdateParams & LayoutFields.SET_ORIENTATION_CHANGE_COMPLETE) != 0) {
|
||||
builder.append(" ORIENTATION_CHANGE_COMPLETE");
|
||||
}
|
||||
if ((bulkUpdateParams & LayoutFields.SET_TURN_ON_SCREEN) != 0) {
|
||||
builder.append(" TURN_ON_SCREEN");
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
public void dumpLocked(PrintWriter pw, String prefix, boolean dumpAll) {
|
||||
if (dumpAll) {
|
||||
if (mWindowDetachedWallpaper != null) {
|
||||
pw.print(prefix); pw.print("mWindowDetachedWallpaper=");
|
||||
pw.println(mWindowDetachedWallpaper);
|
||||
final String subPrefix = " " + prefix;
|
||||
final String subSubPrefix = " " + subPrefix;
|
||||
|
||||
boolean needSep = false;
|
||||
if (mAppAnimators.size() > 0) {
|
||||
needSep = true;
|
||||
pw.println(" App Animators:");
|
||||
for (int i=mAppAnimators.size()-1; i>=0; i--) {
|
||||
AppWindowAnimator anim = mAppAnimators.get(i);
|
||||
pw.print(prefix); pw.print("App Animator #"); pw.print(i);
|
||||
pw.print(' '); pw.print(anim);
|
||||
if (dumpAll) {
|
||||
pw.println(':');
|
||||
anim.dump(pw, subPrefix, dumpAll);
|
||||
} else {
|
||||
pw.println();
|
||||
}
|
||||
}
|
||||
pw.print(prefix); pw.print("mAnimTransactionSequence=");
|
||||
pw.print(mAnimTransactionSequence);
|
||||
pw.println(" mForceHiding=" + forceHidingToString());
|
||||
for (int i = 0; i < mDisplayContentsAnimators.size(); i++) {
|
||||
pw.print(prefix); pw.print("DisplayContentsAnimator #");
|
||||
pw.println(mDisplayContentsAnimators.keyAt(i));
|
||||
DisplayContentsAnimator displayAnimator = mDisplayContentsAnimators.valueAt(i);
|
||||
final String subPrefix = " " + prefix;
|
||||
final String subSubPrefix = " " + subPrefix;
|
||||
if (displayAnimator.mWindowAnimationBackgroundSurface != null) {
|
||||
pw.println(subPrefix + "mWindowAnimationBackgroundSurface:");
|
||||
}
|
||||
if (mWallpaperTokens.size() > 0) {
|
||||
if (needSep) {
|
||||
pw.println();
|
||||
}
|
||||
needSep = true;
|
||||
pw.print(prefix); pw.println("Wallpaper tokens:");
|
||||
for (int i=mWallpaperTokens.size()-1; i>=0; i--) {
|
||||
WindowToken token = mWallpaperTokens.get(i);
|
||||
pw.print(prefix); pw.print("Wallpaper #"); pw.print(i);
|
||||
pw.print(' '); pw.print(token);
|
||||
if (dumpAll) {
|
||||
pw.println(':');
|
||||
token.dump(pw, subPrefix);
|
||||
} else {
|
||||
pw.println();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (needSep) {
|
||||
pw.println();
|
||||
}
|
||||
for (int i = 0; i < mDisplayContentsAnimators.size(); i++) {
|
||||
pw.print(prefix); pw.print("DisplayContentsAnimator #");
|
||||
pw.print(mDisplayContentsAnimators.keyAt(i));
|
||||
pw.println(":");
|
||||
DisplayContentsAnimator displayAnimator = mDisplayContentsAnimators.valueAt(i);
|
||||
for (int j=0; j<displayAnimator.mWinAnimators.size(); j++) {
|
||||
WindowStateAnimator wanim = displayAnimator.mWinAnimators.get(j);
|
||||
pw.print(subPrefix); pw.print("Window #"); pw.print(j);
|
||||
pw.print(": "); pw.println(wanim);
|
||||
}
|
||||
if (displayAnimator.mWindowAnimationBackgroundSurface != null) {
|
||||
if (dumpAll || displayAnimator.mWindowAnimationBackgroundSurface.mDimShown) {
|
||||
pw.print(subPrefix); pw.println("mWindowAnimationBackgroundSurface:");
|
||||
displayAnimator.mWindowAnimationBackgroundSurface.printTo(subSubPrefix, pw);
|
||||
}
|
||||
if (displayAnimator.mDimAnimator != null) {
|
||||
pw.println(subPrefix + "mDimAnimator:");
|
||||
displayAnimator.mDimAnimator.printTo(subSubPrefix, pw);
|
||||
} else {
|
||||
pw.println(subPrefix + "no DimAnimator ");
|
||||
}
|
||||
if (displayAnimator.mDimParams != null) {
|
||||
pw.println(subPrefix + "mDimParams:");
|
||||
displayAnimator.mDimParams.printTo(subSubPrefix, pw);
|
||||
} else {
|
||||
pw.println(subPrefix + "no DimParams ");
|
||||
}
|
||||
if (displayAnimator.mScreenRotationAnimation != null) {
|
||||
pw.println(subPrefix + "mScreenRotationAnimation:");
|
||||
displayAnimator.mScreenRotationAnimation.printTo(subSubPrefix, pw);
|
||||
} else {
|
||||
pw.print(subPrefix + "no ScreenRotationAnimation ");
|
||||
}
|
||||
}
|
||||
pw.println();
|
||||
if (displayAnimator.mDimAnimator != null) {
|
||||
if (dumpAll || displayAnimator.mDimAnimator.mDimShown) {
|
||||
pw.print(subPrefix); pw.println("mDimAnimator:");
|
||||
displayAnimator.mDimAnimator.printTo(subSubPrefix, pw);
|
||||
}
|
||||
} else if (dumpAll) {
|
||||
pw.print(subPrefix); pw.println("no DimAnimator ");
|
||||
}
|
||||
if (displayAnimator.mDimParams != null) {
|
||||
pw.print(subPrefix); pw.println("mDimParams:");
|
||||
displayAnimator.mDimParams.printTo(subSubPrefix, pw);
|
||||
} else if (dumpAll) {
|
||||
pw.print(subPrefix); pw.println("no DimParams ");
|
||||
}
|
||||
if (displayAnimator.mScreenRotationAnimation != null) {
|
||||
pw.print(subPrefix); pw.println("mScreenRotationAnimation:");
|
||||
displayAnimator.mScreenRotationAnimation.printTo(subSubPrefix, pw);
|
||||
} else if (dumpAll) {
|
||||
pw.print(subPrefix); pw.println("no ScreenRotationAnimation ");
|
||||
}
|
||||
}
|
||||
|
||||
pw.println();
|
||||
|
||||
if (dumpAll) {
|
||||
pw.print(prefix); pw.print("mAnimTransactionSequence=");
|
||||
pw.print(mAnimTransactionSequence);
|
||||
pw.print(" mForceHiding="); pw.println(forceHidingToString());
|
||||
pw.print(prefix); pw.print("mCurrentTime=");
|
||||
pw.println(TimeUtils.formatUptime(mCurrentTime));
|
||||
pw.print(prefix); pw.print("mDw=");
|
||||
pw.print(mDw); pw.print(" mDh="); pw.print(mDh);
|
||||
pw.print(" mInnerDw="); pw.print(mInnerDw);
|
||||
pw.print(" mInnerDh="); pw.println(mInnerDh);
|
||||
}
|
||||
if (mBulkUpdateParams != 0) {
|
||||
pw.print(prefix); pw.print("mBulkUpdateParams=0x");
|
||||
pw.print(Integer.toHexString(mBulkUpdateParams));
|
||||
pw.println(bulkUpdateParamsToString(mBulkUpdateParams));
|
||||
}
|
||||
if (mPendingActions != 0) {
|
||||
pw.print(prefix); pw.print("mPendingActions=0x");
|
||||
pw.println(Integer.toHexString(mPendingActions));
|
||||
}
|
||||
if (mWindowDetachedWallpaper != null) {
|
||||
pw.print(prefix); pw.print("mWindowDetachedWallpaper=");
|
||||
pw.println(mWindowDetachedWallpaper);
|
||||
}
|
||||
pw.print(prefix); pw.print("mWallpaperTarget="); pw.println(mWallpaperTarget);
|
||||
pw.print(prefix); pw.print("mWpAppAnimator="); pw.println(mWpAppAnimator);
|
||||
if (mLowerWallpaperTarget != null || mUpperWallpaperTarget != null) {
|
||||
pw.print(prefix); pw.print("mLowerWallpaperTarget=");
|
||||
pw.println(mLowerWallpaperTarget);
|
||||
pw.print(prefix); pw.print("mUpperWallpaperTarget=");
|
||||
pw.println(mUpperWallpaperTarget);
|
||||
}
|
||||
if (mUniverseBackground != null) {
|
||||
pw.print(prefix); pw.print("mUniverseBackground="); pw.print(mUniverseBackground);
|
||||
pw.print(" mAboveUniverseLayer="); pw.println(mAboveUniverseLayer);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10329,6 +10329,11 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
mPolicy.dump(" ", pw, args);
|
||||
}
|
||||
|
||||
void dumpAnimatorLocked(PrintWriter pw, String[] args, boolean dumpAll) {
|
||||
pw.println("WINDOW MANAGER ANIMATOR STATE (dumpsys window animator)");
|
||||
mAnimator.dumpLocked(pw, " ", dumpAll);
|
||||
}
|
||||
|
||||
void dumpTokensLocked(PrintWriter pw, boolean dumpAll) {
|
||||
pw.println("WINDOW MANAGER TOKENS (dumpsys window tokens)");
|
||||
if (mTokenMap.size() > 0) {
|
||||
@ -10605,7 +10610,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
pw.print(" mInputMethodWindow="); pw.println(mInputMethodWindow);
|
||||
}
|
||||
pw.print(" mWallpaperTarget="); pw.println(mWallpaperTarget);
|
||||
if (mLowerWallpaperTarget != null && mUpperWallpaperTarget != null) {
|
||||
if (mLowerWallpaperTarget != null || mUpperWallpaperTarget != null) {
|
||||
pw.print(" mLowerWallpaperTarget="); pw.println(mLowerWallpaperTarget);
|
||||
pw.print(" mUpperWallpaperTarget="); pw.println(mUpperWallpaperTarget);
|
||||
}
|
||||
@ -10689,8 +10694,32 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
pw.print(" mStartingIconInTransition="); pw.print(mStartingIconInTransition);
|
||||
pw.print(" mSkipAppTransitionAnimation="); pw.println(mSkipAppTransitionAnimation);
|
||||
pw.println(" Window Animator:");
|
||||
mAnimator.dumpLocked(pw, " ", dumpAll);
|
||||
pw.println(" mLayoutToAnim:");
|
||||
pw.print(" mParamsModified="); pw.print(mLayoutToAnim.mParamsModified);
|
||||
pw.print(" mAnimationScheduled="); pw.print(mLayoutToAnim.mAnimationScheduled);
|
||||
pw.print(" mChanges=0x");
|
||||
pw.println(Long.toHexString(mLayoutToAnim.mChanges));
|
||||
pw.print(" mWallpaperTarget="); pw.println(mLayoutToAnim.mWallpaperTarget);
|
||||
if (mLayoutToAnim.mLowerWallpaperTarget != null
|
||||
|| mLayoutToAnim.mUpperWallpaperTarget != null) {
|
||||
pw.print(" mLowerWallpaperTarget=");
|
||||
pw.println(mLayoutToAnim.mLowerWallpaperTarget);
|
||||
pw.print(" mUpperWallpaperTarget=");
|
||||
pw.println(mLayoutToAnim.mUpperWallpaperTarget);
|
||||
}
|
||||
for (int i=0; i<mLayoutToAnim.mWinAnimatorLists.size(); i++) {
|
||||
pw.print(" Win Animator List #");
|
||||
pw.print(mLayoutToAnim.mWinAnimatorLists.keyAt(i)); pw.println(":");
|
||||
WinAnimatorList wanim = mLayoutToAnim.mWinAnimatorLists.valueAt(i);
|
||||
for (int wi=0; wi<wanim.size(); wi++) {
|
||||
pw.print(" "); pw.println(wanim.get(wi));
|
||||
}
|
||||
}
|
||||
for (int i=0; i<mLayoutToAnim.mWallpaperTokens.size(); i++) {
|
||||
pw.print(" Wallpaper Token #"); pw.print(i); pw.print(": ");
|
||||
pw.println(mLayoutToAnim.mWallpaperTokens.get(i));
|
||||
}
|
||||
// XXX also need to print mDimParams and mAppWindowAnimParams. I am lazy.
|
||||
}
|
||||
}
|
||||
|
||||
@ -10800,6 +10829,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
pw.println(" cmd may be one of:");
|
||||
pw.println(" l[astanr]: last ANR information");
|
||||
pw.println(" p[policy]: policy state");
|
||||
pw.println(" a[animator]: animator state");
|
||||
pw.println(" s[essions]: active sessions");
|
||||
pw.println(" t[okens]: token list");
|
||||
pw.println(" w[indows]: window list");
|
||||
@ -10829,6 +10859,11 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
dumpPolicyLocked(pw, args, true);
|
||||
}
|
||||
return;
|
||||
} else if ("animator".equals(cmd) || "a".equals(cmd)) {
|
||||
synchronized(mWindowMap) {
|
||||
dumpAnimatorLocked(pw, args, true);
|
||||
}
|
||||
return;
|
||||
} else if ("sessions".equals(cmd) || "s".equals(cmd)) {
|
||||
synchronized(mWindowMap) {
|
||||
dumpSessionsLocked(pw, true);
|
||||
@ -10874,6 +10909,11 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
if (dumpAll) {
|
||||
pw.println("-------------------------------------------------------------------------------");
|
||||
}
|
||||
dumpAnimatorLocked(pw, args, dumpAll);
|
||||
pw.println();
|
||||
if (dumpAll) {
|
||||
pw.println("-------------------------------------------------------------------------------");
|
||||
}
|
||||
dumpSessionsLocked(pw, dumpAll);
|
||||
pw.println();
|
||||
if (dumpAll) {
|
||||
|
@ -250,7 +250,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
|
||||
// Used to improve performance of toString()
|
||||
String mStringNameCache;
|
||||
CharSequence mLastTitle;
|
||||
boolean mWasPaused;
|
||||
boolean mWasExiting;
|
||||
|
||||
final WindowStateAnimator mWinAnimator;
|
||||
|
||||
@ -1206,7 +1206,8 @@ final class WindowState implements WindowManagerPolicy.WindowState {
|
||||
pw.print(" visible="); mLastVisibleInsets.printShortString(pw);
|
||||
pw.println();
|
||||
}
|
||||
mWinAnimator.dump(pw, prefix, dumpAll);
|
||||
pw.print(prefix); pw.print(mWinAnimator); pw.println(":");
|
||||
mWinAnimator.dump(pw, prefix + " ", dumpAll);
|
||||
if (mExiting || mRemoveOnExit || mDestroying || mRemoved) {
|
||||
pw.print(prefix); pw.print("mExiting="); pw.print(mExiting);
|
||||
pw.print(" mRemoveOnExit="); pw.print(mRemoveOnExit);
|
||||
@ -1241,9 +1242,9 @@ final class WindowState implements WindowManagerPolicy.WindowState {
|
||||
@Override
|
||||
public String toString() {
|
||||
if (mStringNameCache == null || mLastTitle != mAttrs.getTitle()
|
||||
|| mWasPaused != mToken.paused) {
|
||||
|| mWasExiting != mExiting) {
|
||||
mLastTitle = mAttrs.getTitle();
|
||||
mWasPaused = mToken.paused;
|
||||
mWasExiting = mExiting;
|
||||
mStringNameCache = "Window{" + Integer.toHexString(System.identityHashCode(this))
|
||||
+ " u" + UserHandle.getUserId(mSession.mUid)
|
||||
+ " " + mLastTitle + (mExiting ? " EXITING}" : "}");
|
||||
|
@ -1604,10 +1604,11 @@ class WindowStateAnimator {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer("WindowStateAnimator (");
|
||||
sb.append(mWin.mLastTitle + "): ");
|
||||
sb.append("mSurface " + mSurface);
|
||||
sb.append(", mAnimation " + mAnimation);
|
||||
StringBuffer sb = new StringBuffer("WindowStateAnimator{");
|
||||
sb.append(Integer.toHexString(System.identityHashCode(this)));
|
||||
sb.append(' ');
|
||||
sb.append(mWin.mAttrs.getTitle());
|
||||
sb.append('}');
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user