Skip to content

Commit 872e3d3

Browse files
Dianne HackbornAndroid Git Automerger
authored andcommitted
am b9372de: Merge "More debugging for issue #7343200 Fails to show wallpaper in the..." into jb-mr1-dev
* commit 'b9372de07d3329928f28104bb997aab57237504c': More debugging for issue #7343200 Fails to show wallpaper in the...
2 parents f19cce1 + b9372de commit 872e3d3

File tree

5 files changed

+207
-51
lines changed

5 files changed

+207
-51
lines changed

services/java/com/android/server/wm/AppWindowAnimator.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -279,22 +279,22 @@ boolean showAllWindowsLocked() {
279279
return isAnimating;
280280
}
281281

282-
void dump(PrintWriter pw, String prefix) {
283-
if (freezingScreen) {
284-
pw.print(prefix); pw.print(" freezingScreen="); pw.println(freezingScreen);
285-
}
282+
void dump(PrintWriter pw, String prefix, boolean dumpAll) {
283+
pw.print(prefix); pw.print("mAppToken="); pw.println(mAppToken);
284+
pw.print(prefix); pw.print("mAnimator="); pw.println(mAnimator);
285+
pw.print(prefix); pw.print("freezingScreen="); pw.print(freezingScreen);
286+
pw.print(" allDrawn="); pw.print(allDrawn);
287+
pw.print(" animLayerAdjustment="); pw.println(animLayerAdjustment);
286288
if (animating || animation != null) {
287289
pw.print(prefix); pw.print("animating="); pw.print(animating);
288-
pw.print(" animation="); pw.println(animation);
290+
pw.print(" animInitialized="); pw.println(animInitialized);
291+
pw.print(prefix); pw.print("animation="); pw.println(animation);
289292
}
290293
if (hasTransformation) {
291294
pw.print(prefix); pw.print("XForm: ");
292295
transformation.printShortString(pw);
293296
pw.println();
294297
}
295-
if (animLayerAdjustment != 0) {
296-
pw.print(prefix); pw.print("animLayerAdjustment="); pw.println(animLayerAdjustment);
297-
}
298298
if (thumbnail != null) {
299299
pw.print(prefix); pw.print("thumbnail="); pw.print(thumbnail);
300300
pw.print(" x="); pw.print(thumbnailX);
@@ -304,6 +304,11 @@ void dump(PrintWriter pw, String prefix) {
304304
pw.print(prefix); pw.print("thumbnailTransformation=");
305305
pw.println(thumbnailTransformation.toShortString());
306306
}
307+
for (int i=0; i<mAllAppWinAnimators.size(); i++) {
308+
WindowStateAnimator wanim = mAllAppWinAnimators.get(i);
309+
pw.print(prefix); pw.print("App Win Anim #"); pw.print(i);
310+
pw.print(": "); pw.println(wanim);
311+
}
307312
}
308313

309314
// This is an animation that does nothing: it just immediately finishes

services/java/com/android/server/wm/WindowAnimator.java

Lines changed: 141 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@
1818
import android.util.Slog;
1919
import android.util.SparseArray;
2020
import android.util.SparseIntArray;
21+
import android.util.TimeUtils;
2122
import android.view.Display;
2223
import android.view.Surface;
2324
import android.view.WindowManagerPolicy;
2425
import android.view.animation.Animation;
2526

2627
import com.android.server.wm.WindowManagerService.AppWindowAnimParams;
28+
import com.android.server.wm.WindowManagerService.LayoutFields;
2729
import com.android.server.wm.WindowManagerService.LayoutToAnimatorParams;
2830

2931
import java.io.PrintWriter;
@@ -197,6 +199,15 @@ private void copyLayoutToAnimParamsLocked() {
197199
mWallpaperTokens = new ArrayList<WindowToken>(layoutToAnim.mWallpaperTokens);
198200
}
199201

202+
if (WindowManagerService.DEBUG_WALLPAPER_LIGHT) {
203+
if (mWallpaperTarget != layoutToAnim.mWallpaperTarget
204+
|| mLowerWallpaperTarget != layoutToAnim.mLowerWallpaperTarget
205+
|| mUpperWallpaperTarget != layoutToAnim.mUpperWallpaperTarget) {
206+
Slog.d(TAG, "Updating anim wallpaper: target=" + mWallpaperTarget
207+
+ " lower=" + mLowerWallpaperTarget + " upper="
208+
+ mUpperWallpaperTarget);
209+
}
210+
}
200211
mWallpaperTarget = layoutToAnim.mWallpaperTarget;
201212
mWpAppAnimator = mWallpaperTarget == null
202213
? null : mWallpaperTarget.mAppToken == null
@@ -735,46 +746,144 @@ boolean isDimmingLocked(final WindowStateAnimator winAnimator) {
735746
return dimParams != null && dimParams.mDimWinAnimator == winAnimator;
736747
}
737748

749+
static String bulkUpdateParamsToString(int bulkUpdateParams) {
750+
StringBuilder builder = new StringBuilder(128);
751+
if ((bulkUpdateParams & LayoutFields.SET_UPDATE_ROTATION) != 0) {
752+
builder.append(" UPDATE_ROTATION");
753+
}
754+
if ((bulkUpdateParams & LayoutFields.SET_WALLPAPER_MAY_CHANGE) != 0) {
755+
builder.append(" WALLPAPER_MAY_CHANGE");
756+
}
757+
if ((bulkUpdateParams & LayoutFields.SET_FORCE_HIDING_CHANGED) != 0) {
758+
builder.append(" FORCE_HIDING_CHANGED");
759+
}
760+
if ((bulkUpdateParams & LayoutFields.SET_ORIENTATION_CHANGE_COMPLETE) != 0) {
761+
builder.append(" ORIENTATION_CHANGE_COMPLETE");
762+
}
763+
if ((bulkUpdateParams & LayoutFields.SET_TURN_ON_SCREEN) != 0) {
764+
builder.append(" TURN_ON_SCREEN");
765+
}
766+
return builder.toString();
767+
}
768+
738769
public void dumpLocked(PrintWriter pw, String prefix, boolean dumpAll) {
739-
if (dumpAll) {
740-
if (mWindowDetachedWallpaper != null) {
741-
pw.print(prefix); pw.print("mWindowDetachedWallpaper=");
742-
pw.println(mWindowDetachedWallpaper);
743-
}
744-
pw.print(prefix); pw.print("mAnimTransactionSequence=");
745-
pw.print(mAnimTransactionSequence);
746-
pw.println(" mForceHiding=" + forceHidingToString());
747-
for (int i = 0; i < mDisplayContentsAnimators.size(); i++) {
748-
pw.print(prefix); pw.print("DisplayContentsAnimator #");
749-
pw.println(mDisplayContentsAnimators.keyAt(i));
750-
DisplayContentsAnimator displayAnimator = mDisplayContentsAnimators.valueAt(i);
751-
final String subPrefix = " " + prefix;
752-
final String subSubPrefix = " " + subPrefix;
753-
if (displayAnimator.mWindowAnimationBackgroundSurface != null) {
754-
pw.println(subPrefix + "mWindowAnimationBackgroundSurface:");
755-
displayAnimator.mWindowAnimationBackgroundSurface.printTo(subSubPrefix, pw);
756-
}
757-
if (displayAnimator.mDimAnimator != null) {
758-
pw.println(subPrefix + "mDimAnimator:");
759-
displayAnimator.mDimAnimator.printTo(subSubPrefix, pw);
760-
} else {
761-
pw.println(subPrefix + "no DimAnimator ");
762-
}
763-
if (displayAnimator.mDimParams != null) {
764-
pw.println(subPrefix + "mDimParams:");
765-
displayAnimator.mDimParams.printTo(subSubPrefix, pw);
770+
final String subPrefix = " " + prefix;
771+
final String subSubPrefix = " " + subPrefix;
772+
773+
boolean needSep = false;
774+
if (mAppAnimators.size() > 0) {
775+
needSep = true;
776+
pw.println(" App Animators:");
777+
for (int i=mAppAnimators.size()-1; i>=0; i--) {
778+
AppWindowAnimator anim = mAppAnimators.get(i);
779+
pw.print(prefix); pw.print("App Animator #"); pw.print(i);
780+
pw.print(' '); pw.print(anim);
781+
if (dumpAll) {
782+
pw.println(':');
783+
anim.dump(pw, subPrefix, dumpAll);
766784
} else {
767-
pw.println(subPrefix + "no DimParams ");
785+
pw.println();
768786
}
769-
if (displayAnimator.mScreenRotationAnimation != null) {
770-
pw.println(subPrefix + "mScreenRotationAnimation:");
771-
displayAnimator.mScreenRotationAnimation.printTo(subSubPrefix, pw);
787+
}
788+
}
789+
if (mWallpaperTokens.size() > 0) {
790+
if (needSep) {
791+
pw.println();
792+
}
793+
needSep = true;
794+
pw.print(prefix); pw.println("Wallpaper tokens:");
795+
for (int i=mWallpaperTokens.size()-1; i>=0; i--) {
796+
WindowToken token = mWallpaperTokens.get(i);
797+
pw.print(prefix); pw.print("Wallpaper #"); pw.print(i);
798+
pw.print(' '); pw.print(token);
799+
if (dumpAll) {
800+
pw.println(':');
801+
token.dump(pw, subPrefix);
772802
} else {
773-
pw.print(subPrefix + "no ScreenRotationAnimation ");
803+
pw.println();
774804
}
775805
}
806+
}
807+
808+
if (needSep) {
776809
pw.println();
777810
}
811+
for (int i = 0; i < mDisplayContentsAnimators.size(); i++) {
812+
pw.print(prefix); pw.print("DisplayContentsAnimator #");
813+
pw.print(mDisplayContentsAnimators.keyAt(i));
814+
pw.println(":");
815+
DisplayContentsAnimator displayAnimator = mDisplayContentsAnimators.valueAt(i);
816+
for (int j=0; j<displayAnimator.mWinAnimators.size(); j++) {
817+
WindowStateAnimator wanim = displayAnimator.mWinAnimators.get(j);
818+
pw.print(subPrefix); pw.print("Window #"); pw.print(j);
819+
pw.print(": "); pw.println(wanim);
820+
}
821+
if (displayAnimator.mWindowAnimationBackgroundSurface != null) {
822+
if (dumpAll || displayAnimator.mWindowAnimationBackgroundSurface.mDimShown) {
823+
pw.print(subPrefix); pw.println("mWindowAnimationBackgroundSurface:");
824+
displayAnimator.mWindowAnimationBackgroundSurface.printTo(subSubPrefix, pw);
825+
}
826+
}
827+
if (displayAnimator.mDimAnimator != null) {
828+
if (dumpAll || displayAnimator.mDimAnimator.mDimShown) {
829+
pw.print(subPrefix); pw.println("mDimAnimator:");
830+
displayAnimator.mDimAnimator.printTo(subSubPrefix, pw);
831+
}
832+
} else if (dumpAll) {
833+
pw.print(subPrefix); pw.println("no DimAnimator ");
834+
}
835+
if (displayAnimator.mDimParams != null) {
836+
pw.print(subPrefix); pw.println("mDimParams:");
837+
displayAnimator.mDimParams.printTo(subSubPrefix, pw);
838+
} else if (dumpAll) {
839+
pw.print(subPrefix); pw.println("no DimParams ");
840+
}
841+
if (displayAnimator.mScreenRotationAnimation != null) {
842+
pw.print(subPrefix); pw.println("mScreenRotationAnimation:");
843+
displayAnimator.mScreenRotationAnimation.printTo(subSubPrefix, pw);
844+
} else if (dumpAll) {
845+
pw.print(subPrefix); pw.println("no ScreenRotationAnimation ");
846+
}
847+
}
848+
849+
pw.println();
850+
851+
if (dumpAll) {
852+
pw.print(prefix); pw.print("mAnimTransactionSequence=");
853+
pw.print(mAnimTransactionSequence);
854+
pw.print(" mForceHiding="); pw.println(forceHidingToString());
855+
pw.print(prefix); pw.print("mCurrentTime=");
856+
pw.println(TimeUtils.formatUptime(mCurrentTime));
857+
pw.print(prefix); pw.print("mDw=");
858+
pw.print(mDw); pw.print(" mDh="); pw.print(mDh);
859+
pw.print(" mInnerDw="); pw.print(mInnerDw);
860+
pw.print(" mInnerDh="); pw.println(mInnerDh);
861+
}
862+
if (mBulkUpdateParams != 0) {
863+
pw.print(prefix); pw.print("mBulkUpdateParams=0x");
864+
pw.print(Integer.toHexString(mBulkUpdateParams));
865+
pw.println(bulkUpdateParamsToString(mBulkUpdateParams));
866+
}
867+
if (mPendingActions != 0) {
868+
pw.print(prefix); pw.print("mPendingActions=0x");
869+
pw.println(Integer.toHexString(mPendingActions));
870+
}
871+
if (mWindowDetachedWallpaper != null) {
872+
pw.print(prefix); pw.print("mWindowDetachedWallpaper=");
873+
pw.println(mWindowDetachedWallpaper);
874+
}
875+
pw.print(prefix); pw.print("mWallpaperTarget="); pw.println(mWallpaperTarget);
876+
pw.print(prefix); pw.print("mWpAppAnimator="); pw.println(mWpAppAnimator);
877+
if (mLowerWallpaperTarget != null || mUpperWallpaperTarget != null) {
878+
pw.print(prefix); pw.print("mLowerWallpaperTarget=");
879+
pw.println(mLowerWallpaperTarget);
880+
pw.print(prefix); pw.print("mUpperWallpaperTarget=");
881+
pw.println(mUpperWallpaperTarget);
882+
}
883+
if (mUniverseBackground != null) {
884+
pw.print(prefix); pw.print("mUniverseBackground="); pw.print(mUniverseBackground);
885+
pw.print(" mAboveUniverseLayer="); pw.println(mAboveUniverseLayer);
886+
}
778887
}
779888

780889
void clearPendingActions() {

services/java/com/android/server/wm/WindowManagerService.java

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10329,6 +10329,11 @@ void dumpPolicyLocked(PrintWriter pw, String[] args, boolean dumpAll) {
1032910329
mPolicy.dump(" ", pw, args);
1033010330
}
1033110331

10332+
void dumpAnimatorLocked(PrintWriter pw, String[] args, boolean dumpAll) {
10333+
pw.println("WINDOW MANAGER ANIMATOR STATE (dumpsys window animator)");
10334+
mAnimator.dumpLocked(pw, " ", dumpAll);
10335+
}
10336+
1033210337
void dumpTokensLocked(PrintWriter pw, boolean dumpAll) {
1033310338
pw.println("WINDOW MANAGER TOKENS (dumpsys window tokens)");
1033410339
if (mTokenMap.size() > 0) {
@@ -10605,7 +10610,7 @@ void dumpWindowsNoHeaderLocked(PrintWriter pw, boolean dumpAll,
1060510610
pw.print(" mInputMethodWindow="); pw.println(mInputMethodWindow);
1060610611
}
1060710612
pw.print(" mWallpaperTarget="); pw.println(mWallpaperTarget);
10608-
if (mLowerWallpaperTarget != null && mUpperWallpaperTarget != null) {
10613+
if (mLowerWallpaperTarget != null || mUpperWallpaperTarget != null) {
1060910614
pw.print(" mLowerWallpaperTarget="); pw.println(mLowerWallpaperTarget);
1061010615
pw.print(" mUpperWallpaperTarget="); pw.println(mUpperWallpaperTarget);
1061110616
}
@@ -10689,8 +10694,32 @@ void dumpWindowsNoHeaderLocked(PrintWriter pw, boolean dumpAll,
1068910694
}
1069010695
pw.print(" mStartingIconInTransition="); pw.print(mStartingIconInTransition);
1069110696
pw.print(" mSkipAppTransitionAnimation="); pw.println(mSkipAppTransitionAnimation);
10692-
pw.println(" Window Animator:");
10693-
mAnimator.dumpLocked(pw, " ", dumpAll);
10697+
pw.println(" mLayoutToAnim:");
10698+
pw.print(" mParamsModified="); pw.print(mLayoutToAnim.mParamsModified);
10699+
pw.print(" mAnimationScheduled="); pw.print(mLayoutToAnim.mAnimationScheduled);
10700+
pw.print(" mChanges=0x");
10701+
pw.println(Long.toHexString(mLayoutToAnim.mChanges));
10702+
pw.print(" mWallpaperTarget="); pw.println(mLayoutToAnim.mWallpaperTarget);
10703+
if (mLayoutToAnim.mLowerWallpaperTarget != null
10704+
|| mLayoutToAnim.mUpperWallpaperTarget != null) {
10705+
pw.print(" mLowerWallpaperTarget=");
10706+
pw.println(mLayoutToAnim.mLowerWallpaperTarget);
10707+
pw.print(" mUpperWallpaperTarget=");
10708+
pw.println(mLayoutToAnim.mUpperWallpaperTarget);
10709+
}
10710+
for (int i=0; i<mLayoutToAnim.mWinAnimatorLists.size(); i++) {
10711+
pw.print(" Win Animator List #");
10712+
pw.print(mLayoutToAnim.mWinAnimatorLists.keyAt(i)); pw.println(":");
10713+
WinAnimatorList wanim = mLayoutToAnim.mWinAnimatorLists.valueAt(i);
10714+
for (int wi=0; wi<wanim.size(); wi++) {
10715+
pw.print(" "); pw.println(wanim.get(wi));
10716+
}
10717+
}
10718+
for (int i=0; i<mLayoutToAnim.mWallpaperTokens.size(); i++) {
10719+
pw.print(" Wallpaper Token #"); pw.print(i); pw.print(": ");
10720+
pw.println(mLayoutToAnim.mWallpaperTokens.get(i));
10721+
}
10722+
// XXX also need to print mDimParams and mAppWindowAnimParams. I am lazy.
1069410723
}
1069510724
}
1069610725

@@ -10800,6 +10829,7 @@ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
1080010829
pw.println(" cmd may be one of:");
1080110830
pw.println(" l[astanr]: last ANR information");
1080210831
pw.println(" p[policy]: policy state");
10832+
pw.println(" a[animator]: animator state");
1080310833
pw.println(" s[essions]: active sessions");
1080410834
pw.println(" t[okens]: token list");
1080510835
pw.println(" w[indows]: window list");
@@ -10829,6 +10859,11 @@ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
1082910859
dumpPolicyLocked(pw, args, true);
1083010860
}
1083110861
return;
10862+
} else if ("animator".equals(cmd) || "a".equals(cmd)) {
10863+
synchronized(mWindowMap) {
10864+
dumpAnimatorLocked(pw, args, true);
10865+
}
10866+
return;
1083210867
} else if ("sessions".equals(cmd) || "s".equals(cmd)) {
1083310868
synchronized(mWindowMap) {
1083410869
dumpSessionsLocked(pw, true);
@@ -10874,6 +10909,11 @@ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
1087410909
if (dumpAll) {
1087510910
pw.println("-------------------------------------------------------------------------------");
1087610911
}
10912+
dumpAnimatorLocked(pw, args, dumpAll);
10913+
pw.println();
10914+
if (dumpAll) {
10915+
pw.println("-------------------------------------------------------------------------------");
10916+
}
1087710917
dumpSessionsLocked(pw, dumpAll);
1087810918
pw.println();
1087910919
if (dumpAll) {

services/java/com/android/server/wm/WindowState.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
250250
// Used to improve performance of toString()
251251
String mStringNameCache;
252252
CharSequence mLastTitle;
253-
boolean mWasPaused;
253+
boolean mWasExiting;
254254

255255
final WindowStateAnimator mWinAnimator;
256256

@@ -1206,7 +1206,8 @@ void dump(PrintWriter pw, String prefix, boolean dumpAll) {
12061206
pw.print(" visible="); mLastVisibleInsets.printShortString(pw);
12071207
pw.println();
12081208
}
1209-
mWinAnimator.dump(pw, prefix, dumpAll);
1209+
pw.print(prefix); pw.print(mWinAnimator); pw.println(":");
1210+
mWinAnimator.dump(pw, prefix + " ", dumpAll);
12101211
if (mExiting || mRemoveOnExit || mDestroying || mRemoved) {
12111212
pw.print(prefix); pw.print("mExiting="); pw.print(mExiting);
12121213
pw.print(" mRemoveOnExit="); pw.print(mRemoveOnExit);
@@ -1241,9 +1242,9 @@ String makeInputChannelName() {
12411242
@Override
12421243
public String toString() {
12431244
if (mStringNameCache == null || mLastTitle != mAttrs.getTitle()
1244-
|| mWasPaused != mToken.paused) {
1245+
|| mWasExiting != mExiting) {
12451246
mLastTitle = mAttrs.getTitle();
1246-
mWasPaused = mToken.paused;
1247+
mWasExiting = mExiting;
12471248
mStringNameCache = "Window{" + Integer.toHexString(System.identityHashCode(this))
12481249
+ " u" + UserHandle.getUserId(mSession.mUid)
12491250
+ " " + mLastTitle + (mExiting ? " EXITING}" : "}");

services/java/com/android/server/wm/WindowStateAnimator.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1604,10 +1604,11 @@ public void dump(PrintWriter pw, String prefix, boolean dumpAll) {
16041604

16051605
@Override
16061606
public String toString() {
1607-
StringBuffer sb = new StringBuffer("WindowStateAnimator (");
1608-
sb.append(mWin.mLastTitle + "): ");
1609-
sb.append("mSurface " + mSurface);
1610-
sb.append(", mAnimation " + mAnimation);
1607+
StringBuffer sb = new StringBuffer("WindowStateAnimator{");
1608+
sb.append(Integer.toHexString(System.identityHashCode(this)));
1609+
sb.append(' ');
1610+
sb.append(mWin.mAttrs.getTitle());
1611+
sb.append('}');
16111612
return sb.toString();
16121613
}
16131614
}

0 commit comments

Comments
 (0)