More debugging for issue #7343200 Fails to show wallpaper in the...
...background for lockscreen sometimes and remains black / blank
There was a bunch of state not being put into the dumpsys output.
In particular, the current wallpaper target of the WindowAnimator
was not being included. I think the problem is that these targets
are not being updated from the main window manager state at some
point where they need to be.
Change-Id: Ic795047f6aea9b6f72d5550bccc9f8d76c6ecb67
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index 9a62482..c8d9cc3 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -18,12 +18,14 @@
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 @@
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 @@
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);
}
}