Merge "More debugging for issue #7343200 Fails to show wallpaper in the..." into jb-mr1-dev

This commit is contained in:
Dianne Hackborn
2012-11-01 15:12:22 -07:00
committed by Android (Google) Code Review
5 changed files with 209 additions and 53 deletions

View File

@ -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

View File

@ -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);
}
}

View File

@ -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) {

View File

@ -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}" : "}");

View File

@ -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();
}
}