diff options
| author | 2011-08-08 19:24:01 -0700 | |
|---|---|---|
| committer | 2011-08-08 19:24:28 -0700 | |
| commit | a44abeb125a0c8a8e5a065f868d316e41354286a (patch) | |
| tree | a2b607644d903e398d8c77f3a76a5a9c960959a1 | |
| parent | 98d29b44f76fea1dd325f06240557dfb253d635e (diff) | |
Improve window manager debug output.
Cleaned this up while I was debugging another issue.
Change-Id: I0663b9ed581c6868b59655a0f994d870971ec1a6
| -rw-r--r-- | core/java/android/view/WindowManager.java | 10 | ||||
| -rw-r--r-- | services/java/com/android/server/wm/WindowManagerService.java | 557 | ||||
| -rw-r--r-- | services/java/com/android/server/wm/WindowState.java | 124 |
3 files changed, 470 insertions, 221 deletions
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index ff378a632623..6b09049966a9 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -1336,8 +1336,10 @@ public interface WindowManager extends ViewManager { sb.append(type); sb.append(" fl=#"); sb.append(Integer.toHexString(flags)); - sb.append(" fmt="); - sb.append(format); + if (format != PixelFormat.OPAQUE) { + sb.append(" fmt="); + sb.append(format); + } if (windowAnimations != 0) { sb.append(" wanim=0x"); sb.append(Integer.toHexString(windowAnimations)); @@ -1373,7 +1375,9 @@ public interface WindowManager extends ViewManager { sb.append(" sysuil="); sb.append(hasSystemUiListeners); } - sb.append(" if=0x").append(Integer.toHexString(inputFeatures)); + if (inputFeatures != 0) { + sb.append(" if=0x").append(Integer.toHexString(inputFeatures)); + } sb.append('}'); return sb.toString(); } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index f80be1b27507..5bc5f304042e 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -53,6 +53,7 @@ import android.app.IActivityManager; import android.app.StatusBarManager; import android.app.admin.DevicePolicyManager; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -2467,10 +2468,13 @@ public class WindowManagerService extends IWindowManager.Stub // if they don't have this permission, mask out the status bar bits if (attrs != null) { - if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR) - != PackageManager.PERMISSION_GRANTED) { - attrs.systemUiVisibility &= ~StatusBarManager.DISABLE_MASK; - attrs.subtreeSystemUiVisibility &= ~StatusBarManager.DISABLE_MASK; + if (((attrs.systemUiVisibility|attrs.subtreeSystemUiVisibility) + & StatusBarManager.DISABLE_MASK) != 0) { + if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR) + != PackageManager.PERMISSION_GRANTED) { + attrs.systemUiVisibility &= ~StatusBarManager.DISABLE_MASK; + attrs.subtreeSystemUiVisibility &= ~StatusBarManager.DISABLE_MASK; + } } } long origId = Binder.clearCallingIdentity(); @@ -6900,7 +6904,7 @@ public class WindowManagerService extends IWindowManager.Stub if (ws.mRebuilding) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); - ws.dump(pw, ""); + ws.dump(pw, "", true); pw.flush(); Slog.w(TAG, "This window was lost: " + ws); Slog.w(TAG, sw.toString()); @@ -8900,159 +8904,260 @@ public class WindowManagerService extends IWindowManager.Stub } } - @Override - public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - if (mContext.checkCallingOrSelfPermission("android.permission.DUMP") - != PackageManager.PERMISSION_GRANTED) { - pw.println("Permission Denial: can't dump WindowManager from from pid=" - + Binder.getCallingPid() - + ", uid=" + Binder.getCallingUid()); - return; - } - + void dumpInput(FileDescriptor fd, PrintWriter pw, boolean dumpAll) { + pw.println("WINDOW MANAGER INPUT (dumpsys window input)"); mInputManager.dump(pw); - pw.println(" "); - - synchronized(mWindowMap) { - pw.println("Current Window Manager state:"); - for (int i=mWindows.size()-1; i>=0; i--) { - WindowState w = mWindows.get(i); - pw.print(" Window #"); pw.print(i); pw.print(' '); - pw.print(w); pw.println(":"); - w.dump(pw, " "); - } - if (mInputMethodDialogs.size() > 0) { - pw.println(" "); - pw.println(" Input method dialogs:"); - for (int i=mInputMethodDialogs.size()-1; i>=0; i--) { - WindowState w = mInputMethodDialogs.get(i); - pw.print(" IM Dialog #"); pw.print(i); pw.print(": "); pw.println(w); + } + + void dumpPolicyLocked(FileDescriptor fd, PrintWriter pw, String[] args, boolean dumpAll) { + pw.println("WINDOW MANAGER POLICY STATE (dumpsys window policy)"); + mPolicy.dump(" ", fd, pw, args); + } + + void dumpTokensLocked(FileDescriptor fd, PrintWriter pw, boolean dumpAll) { + pw.println("WINDOW MANAGER TOKENS (dumpsys window tokens)"); + if (mTokenMap.size() > 0) { + pw.println(" All tokens:"); + Iterator<WindowToken> it = mTokenMap.values().iterator(); + while (it.hasNext()) { + WindowToken token = it.next(); + pw.print(" Token "); pw.print(token.token); + if (dumpAll) { + pw.println(':'); + token.dump(pw, " "); + } else { + pw.println(); } } - if (mPendingRemove.size() > 0) { - pw.println(" "); - pw.println(" Remove pending for:"); - for (int i=mPendingRemove.size()-1; i>=0; i--) { - WindowState w = mPendingRemove.get(i); - pw.print(" Remove #"); pw.print(i); pw.print(' '); - pw.print(w); pw.println(":"); - w.dump(pw, " "); + } + if (mWallpaperTokens.size() > 0) { + pw.println(); + pw.println(" Wallpaper tokens:"); + for (int i=mWallpaperTokens.size()-1; i>=0; i--) { + WindowToken token = mWallpaperTokens.get(i); + pw.print(" Wallpaper #"); pw.print(i); + pw.print(' '); pw.print(token); + if (dumpAll) { + pw.println(':'); + token.dump(pw, " "); + } else { + pw.println(); } } - if (mForceRemoves != null && mForceRemoves.size() > 0) { - pw.println(" "); - pw.println(" Windows force removing:"); - for (int i=mForceRemoves.size()-1; i>=0; i--) { - WindowState w = mForceRemoves.get(i); - pw.print(" Removing #"); pw.print(i); pw.print(' '); - pw.print(w); pw.println(":"); - w.dump(pw, " "); - } + } + if (mAppTokens.size() > 0) { + pw.println(); + pw.println(" Application tokens in Z order:"); + for (int i=mAppTokens.size()-1; i>=0; i--) { + pw.print(" App #"); pw.print(i); pw.print(": "); + pw.println(mAppTokens.get(i)); } - if (mDestroySurface.size() > 0) { - pw.println(" "); - pw.println(" Windows waiting to destroy their surface:"); - for (int i=mDestroySurface.size()-1; i>=0; i--) { - WindowState w = mDestroySurface.get(i); - pw.print(" Destroy #"); pw.print(i); pw.print(' '); - pw.print(w); pw.println(":"); - w.dump(pw, " "); + } + if (mFinishedStarting.size() > 0) { + pw.println(); + pw.println(" Finishing start of application tokens:"); + for (int i=mFinishedStarting.size()-1; i>=0; i--) { + WindowToken token = mFinishedStarting.get(i); + pw.print(" Finished Starting #"); pw.print(i); + pw.print(' '); pw.print(token); + if (dumpAll) { + pw.println(':'); + token.dump(pw, " "); + } else { + pw.println(); } } - if (mLosingFocus.size() > 0) { - pw.println(" "); - pw.println(" Windows losing focus:"); - for (int i=mLosingFocus.size()-1; i>=0; i--) { - WindowState w = mLosingFocus.get(i); - pw.print(" Losing #"); pw.print(i); pw.print(' '); - pw.print(w); pw.println(":"); - w.dump(pw, " "); + } + if (mExitingTokens.size() > 0) { + pw.println(); + pw.println(" Exiting tokens:"); + for (int i=mExitingTokens.size()-1; i>=0; i--) { + WindowToken token = mExitingTokens.get(i); + pw.print(" Exiting #"); pw.print(i); + pw.print(' '); pw.print(token); + if (dumpAll) { + pw.println(':'); + token.dump(pw, " "); + } else { + pw.println(); } } - if (mResizingWindows.size() > 0) { - pw.println(" "); - pw.println(" Windows waiting to resize:"); - for (int i=mResizingWindows.size()-1; i>=0; i--) { - WindowState w = mResizingWindows.get(i); - pw.print(" Resizing #"); pw.print(i); pw.print(' '); - pw.print(w); pw.println(":"); - w.dump(pw, " "); - } - } - if (mSessions.size() > 0) { - pw.println(" "); - pw.println(" All active sessions:"); - Iterator<Session> it = mSessions.iterator(); - while (it.hasNext()) { - Session s = it.next(); - pw.print(" Session "); pw.print(s); pw.println(':'); - s.dump(pw, " "); - } - } - if (mTokenMap.size() > 0) { - pw.println(" "); - pw.println(" All tokens:"); - Iterator<WindowToken> it = mTokenMap.values().iterator(); - while (it.hasNext()) { - WindowToken token = it.next(); - pw.print(" Token "); pw.print(token.token); pw.println(':'); + } + if (mExitingAppTokens.size() > 0) { + pw.println(); + pw.println(" Exiting application tokens:"); + for (int i=mExitingAppTokens.size()-1; i>=0; i--) { + WindowToken token = mExitingAppTokens.get(i); + pw.print(" Exiting App #"); pw.print(i); + pw.print(' '); pw.print(token); + if (dumpAll) { + pw.println(':'); token.dump(pw, " "); + } else { + pw.println(); } } - if (mWallpaperTokens.size() > 0) { - pw.println(" "); - pw.println(" Wallpaper tokens:"); - for (int i=mWallpaperTokens.size()-1; i>=0; i--) { - WindowToken token = mWallpaperTokens.get(i); - pw.print(" Wallpaper #"); pw.print(i); - pw.print(' '); pw.print(token); pw.println(':'); - token.dump(pw, " "); + } + pw.println(); + if (mOpeningApps.size() > 0) { + pw.print(" mOpeningApps="); pw.println(mOpeningApps); + } + if (mClosingApps.size() > 0) { + pw.print(" mClosingApps="); pw.println(mClosingApps); + } + if (mToTopApps.size() > 0) { + pw.print(" mToTopApps="); pw.println(mToTopApps); + } + if (mToBottomApps.size() > 0) { + pw.print(" mToBottomApps="); pw.println(mToBottomApps); + } + } + + void dumpSessionsLocked(FileDescriptor fd, PrintWriter pw, boolean dumpAll) { + pw.println("WINDOW MANAGER SESSIONS (dumpsys window sessions)"); + if (mSessions.size() > 0) { + Iterator<Session> it = mSessions.iterator(); + while (it.hasNext()) { + Session s = it.next(); + pw.print(" Session "); pw.print(s); pw.println(':'); + s.dump(pw, " "); + } + } + } + + void dumpWindowsLocked(FileDescriptor fd, PrintWriter pw, boolean dumpAll, + ArrayList<WindowState> windows) { + pw.println("WINDOW MANAGER WINDOWS (dumpsys window windows)"); + for (int i=mWindows.size()-1; i>=0; i--) { + WindowState w = mWindows.get(i); + if (windows == null || windows.contains(w)) { + pw.print(" Window #"); pw.print(i); pw.print(' '); + pw.print(w); pw.println(":"); + w.dump(pw, " ", dumpAll); + } + } + if (mInputMethodDialogs.size() > 0) { + pw.println(); + pw.println(" Input method dialogs:"); + for (int i=mInputMethodDialogs.size()-1; i>=0; i--) { + WindowState w = mInputMethodDialogs.get(i); + if (windows == null || windows.contains(w)) { + pw.print(" IM Dialog #"); pw.print(i); pw.print(": "); pw.println(w); } } - if (mAppTokens.size() > 0) { - pw.println(" "); - pw.println(" Application tokens in Z order:"); - for (int i=mAppTokens.size()-1; i>=0; i--) { - pw.print(" App #"); pw.print(i); pw.print(": "); - pw.println(mAppTokens.get(i)); + } + if (mPendingRemove.size() > 0) { + pw.println(); + pw.println(" Remove pending for:"); + for (int i=mPendingRemove.size()-1; i>=0; i--) { + WindowState w = mPendingRemove.get(i); + if (windows == null || windows.contains(w)) { + pw.print(" Remove #"); pw.print(i); pw.print(' '); + pw.print(w); + if (dumpAll) { + pw.println(":"); + w.dump(pw, " ", true); + } else { + pw.println(); + } } } - if (mFinishedStarting.size() > 0) { - pw.println(" "); - pw.println(" Finishing start of application tokens:"); - for (int i=mFinishedStarting.size()-1; i>=0; i--) { - WindowToken token = mFinishedStarting.get(i); - pw.print(" Finished Starting #"); pw.print(i); - pw.print(' '); pw.print(token); pw.println(':'); - token.dump(pw, " "); + } + if (mForceRemoves != null && mForceRemoves.size() > 0) { + pw.println(); + pw.println(" Windows force removing:"); + for (int i=mForceRemoves.size()-1; i>=0; i--) { + WindowState w = mForceRemoves.get(i); + pw.print(" Removing #"); pw.print(i); pw.print(' '); + pw.print(w); + if (dumpAll) { + pw.println(":"); + w.dump(pw, " ", true); + } else { + pw.println(); } } - if (mExitingTokens.size() > 0) { - pw.println(" "); - pw.println(" Exiting tokens:"); - for (int i=mExitingTokens.size()-1; i>=0; i--) { - WindowToken token = mExitingTokens.get(i); - pw.print(" Exiting #"); pw.print(i); - pw.print(' '); pw.print(token); pw.println(':'); - token.dump(pw, " "); + } + if (mDestroySurface.size() > 0) { + pw.println(); + pw.println(" Windows waiting to destroy their surface:"); + for (int i=mDestroySurface.size()-1; i>=0; i--) { + WindowState w = mDestroySurface.get(i); + if (windows == null || windows.contains(w)) { + pw.print(" Destroy #"); pw.print(i); pw.print(' '); + pw.print(w); + if (dumpAll) { + pw.println(":"); + w.dump(pw, " ", true); + } else { + pw.println(); + } } } - if (mExitingAppTokens.size() > 0) { - pw.println(" "); - pw.println(" Exiting application tokens:"); - for (int i=mExitingAppTokens.size()-1; i>=0; i--) { - WindowToken token = mExitingAppTokens.get(i); - pw.print(" Exiting App #"); pw.print(i); - pw.print(' '); pw.print(token); pw.println(':'); - token.dump(pw, " "); + } + if (mLosingFocus.size() > 0) { + pw.println(); + pw.println(" Windows losing focus:"); + for (int i=mLosingFocus.size()-1; i>=0; i--) { + WindowState w = mLosingFocus.get(i); + if (windows == null || windows.contains(w)) { + pw.print(" Losing #"); pw.print(i); pw.print(' '); + pw.print(w); + if (dumpAll) { + pw.println(":"); + w.dump(pw, " ", true); + } else { + pw.println(); + } + } + } + } + if (mResizingWindows.size() > 0) { + pw.println(); + pw.println(" Windows waiting to resize:"); + for (int i=mResizingWindows.size()-1; i>=0; i--) { + WindowState w = mResizingWindows.get(i); + if (windows == null || windows.contains(w)) { + pw.print(" Resizing #"); pw.print(i); pw.print(' '); + pw.print(w); + if (dumpAll) { + pw.println(":"); + w.dump(pw, " ", true); + } else { + pw.println(); + } } } - pw.println(" "); - pw.print(" mCurrentFocus="); pw.println(mCurrentFocus); + } + pw.println(); + if (mDisplay != null) { + pw.print(" Display: init="); pw.print(mInitialDisplayWidth); pw.print("x"); + pw.print(mInitialDisplayHeight); pw.print(" base="); + pw.print(mBaseDisplayWidth); pw.print("x"); pw.print(mBaseDisplayHeight); + pw.print(" cur="); + pw.print(mCurDisplayWidth); pw.print("x"); pw.print(mCurDisplayHeight); + pw.print(" app="); + pw.print(mAppDisplayWidth); pw.print("x"); pw.print(mAppDisplayHeight); + pw.print(" raw="); pw.print(mDisplay.getRawWidth()); + pw.print("x"); pw.println(mDisplay.getRawHeight()); + } else { + pw.println(" NO DISPLAY"); + } + pw.print(" mCurConfiguration="); pw.println(this.mCurConfiguration); + pw.print(" mCurrentFocus="); pw.println(mCurrentFocus); + if (mLastFocus != mCurrentFocus) { pw.print(" mLastFocus="); pw.println(mLastFocus); - pw.print(" mFocusedApp="); pw.println(mFocusedApp); + } + pw.print(" mFocusedApp="); pw.println(mFocusedApp); + if (mInputMethodTarget != null) { pw.print(" mInputMethodTarget="); pw.println(mInputMethodTarget); - pw.print(" mInputMethodWindow="); pw.println(mInputMethodWindow); + } + pw.print(" mInTouchMode="); pw.print(mInTouchMode); + pw.print(" mLayoutSeq="); pw.println(mLayoutSeq); + if (dumpAll) { + if (mInputMethodWindow != null) { + pw.print(" mInputMethodWindow="); pw.println(mInputMethodWindow); + } pw.print(" mWallpaperTarget="); pw.println(mWallpaperTarget); if (mLowerWallpaperTarget != null && mUpperWallpaperTarget != null) { pw.print(" mLowerWallpaperTarget="); pw.println(mLowerWallpaperTarget); @@ -9061,13 +9166,19 @@ public class WindowManagerService extends IWindowManager.Stub if (mWindowDetachedWallpaper != null) { pw.print(" mWindowDetachedWallpaper="); pw.println(mWindowDetachedWallpaper); } + pw.print(" mLastWallpaperX="); pw.print(mLastWallpaperX); + pw.print(" mLastWallpaperY="); pw.println(mLastWallpaperY); + if (mInputMethodAnimLayerAdjustment != 0 || + mWallpaperAnimLayerAdjustment != 0) { + pw.print(" mInputMethodAnimLayerAdjustment="); + pw.print(mInputMethodAnimLayerAdjustment); + pw.print(" mWallpaperAnimLayerAdjustment="); + pw.println(mWallpaperAnimLayerAdjustment); + } if (mWindowAnimationBackgroundSurface != null) { pw.println(" mWindowAnimationBackgroundSurface:"); mWindowAnimationBackgroundSurface.printTo(" ", pw); } - pw.print(" mCurConfiguration="); pw.println(this.mCurConfiguration); - pw.print(" mInTouchMode="); pw.print(mInTouchMode); - pw.print(" mLayoutSeq="); pw.println(mLayoutSeq); pw.print(" mSystemBooted="); pw.print(mSystemBooted); pw.print(" mDisplayEnabled="); pw.println(mDisplayEnabled); pw.print(" mLayoutNeeded="); pw.print(mLayoutNeeded); @@ -9078,12 +9189,6 @@ public class WindowManagerService extends IWindowManager.Stub } else { pw.println( " no DimAnimator "); } - pw.print(" mInputMethodAnimLayerAdjustment="); - pw.print(mInputMethodAnimLayerAdjustment); - pw.print(" mWallpaperAnimLayerAdjustment="); - pw.println(mWallpaperAnimLayerAdjustment); - pw.print(" mLastWallpaperX="); pw.print(mLastWallpaperX); - pw.print(" mLastWallpaperY="); pw.println(mLastWallpaperY); pw.print(" mDisplayFrozen="); pw.print(mDisplayFrozen); pw.print(" mWindowsFreezingScreen="); pw.print(mWindowsFreezingScreen); pw.print(" mAppsFreezingScreen="); pw.print(mAppsFreezingScreen); @@ -9113,33 +9218,159 @@ public class WindowManagerService extends IWindowManager.Stub } pw.print(" mStartingIconInTransition="); pw.print(mStartingIconInTransition); pw.print(", mSkipAppTransitionAnimation="); pw.println(mSkipAppTransitionAnimation); - if (mOpeningApps.size() > 0) { - pw.print(" mOpeningApps="); pw.println(mOpeningApps); + } + } + + boolean dumpWindows(FileDescriptor fd, PrintWriter pw, String name, String[] args, + int opti, boolean dumpAll) { + ArrayList<WindowState> windows = new ArrayList<WindowState>(); + if ("visible".equals(name)) { + synchronized(mWindowMap) { + for (int i=mWindows.size()-1; i>=0; i--) { + WindowState w = mWindows.get(i); + if (w.mSurfaceShown) { + windows.add(w); + } + } } - if (mClosingApps.size() > 0) { - pw.print(" mClosingApps="); pw.println(mClosingApps); + } else { + int objectId = 0; + // See if this is an object ID. + try { + objectId = Integer.parseInt(name, 16); + name = null; + } catch (RuntimeException e) { } - if (mToTopApps.size() > 0) { - pw.print(" mToTopApps="); pw.println(mToTopApps); + synchronized(mWindowMap) { + for (int i=mWindows.size()-1; i>=0; i--) { + WindowState w = mWindows.get(i); + if (name != null) { + if (w.mAttrs.getTitle().toString().contains(name)) { + windows.add(w); + } + } else if (System.identityHashCode(w) == objectId) { + windows.add(w); + } + } } - if (mToBottomApps.size() > 0) { - pw.print(" mToBottomApps="); pw.println(mToBottomApps); + } + + if (windows.size() <= 0) { + return false; + } + + synchronized(mWindowMap) { + dumpWindowsLocked(fd, pw, dumpAll, windows); + } + return true; + } + + @Override + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + if (mContext.checkCallingOrSelfPermission("android.permission.DUMP") + != PackageManager.PERMISSION_GRANTED) { + pw.println("Permission Denial: can't dump WindowManager from from pid=" + + Binder.getCallingPid() + + ", uid=" + Binder.getCallingUid()); + return; + } + + boolean dumpAll = false; + + int opti = 0; + while (opti < args.length) { + String opt = args[opti]; + if (opt == null || opt.length() <= 0 || opt.charAt(0) != '-') { + break; } - if (mDisplay != null) { - pw.print(" Display: init="); pw.print(mInitialDisplayWidth); pw.print("x"); - pw.print(mInitialDisplayHeight); pw.print(" base="); - pw.print(mBaseDisplayWidth); pw.print("x"); pw.print(mBaseDisplayHeight); - pw.print(" cur="); - pw.print(mCurDisplayWidth); pw.print("x"); pw.print(mCurDisplayHeight); - pw.print(" app="); - pw.print(mAppDisplayWidth); pw.print("x"); pw.print(mAppDisplayHeight); - pw.print(" raw="); pw.print(mDisplay.getRawWidth()); - pw.print("x"); pw.println(mDisplay.getRawHeight()); + opti++; + if ("-a".equals(opt)) { + dumpAll = true; + } else if ("-h".equals(opt)) { + pw.println("Window manager dump options:"); + pw.println(" [-a] [-h] [cmd] ..."); + pw.println(" cmd may be one of:"); + pw.println(" i[input]: input subsystem state"); + pw.println(" p[policy]: policy state"); + pw.println(" s[essions]: active sessions"); + pw.println(" t[okens]: token list"); + pw.println(" w[indows]: window list"); + pw.println(" cmd may also be a NAME to dump windows. NAME may"); + pw.println(" be a partial substring in a window name, a"); + pw.println(" Window hex object identifier, or"); + pw.println(" \"all\" for all windows, or"); + pw.println(" \"visible\" for the visible windows."); + pw.println(" -a: include all available server state."); + return; } else { - pw.println(" NO DISPLAY"); + pw.println("Unknown argument: " + opt + "; use -h for help"); + } + } + + // Is the caller requesting to dump a particular piece of data? + if (opti < args.length) { + String cmd = args[opti]; + opti++; + if ("input".equals(cmd) || "i".equals(cmd)) { + dumpInput(fd, pw, true); + return; + } else if ("policy".equals(cmd) || "p".equals(cmd)) { + synchronized(mWindowMap) { + dumpPolicyLocked(fd, pw, args, true); + } + return; + } else if ("sessions".equals(cmd) || "s".equals(cmd)) { + synchronized(mWindowMap) { + dumpSessionsLocked(fd, pw, true); + } + return; + } else if ("tokens".equals(cmd) || "t".equals(cmd)) { + synchronized(mWindowMap) { + dumpTokensLocked(fd, pw, true); + } + return; + } else if ("windows".equals(cmd) || "w".equals(cmd)) { + synchronized(mWindowMap) { + dumpWindowsLocked(fd, pw, true, null); + } + return; + } else if ("all".equals(cmd) || "a".equals(cmd)) { + synchronized(mWindowMap) { + dumpWindowsLocked(fd, pw, true, null); + } + return; + } else { + // Dumping a single name? + if (!dumpWindows(fd, pw, cmd, args, opti, dumpAll)) { + pw.println("Bad window command, or no windows match: " + cmd); + pw.println("Use -h for help."); + } + return; + } + } + + dumpInput(fd, pw, dumpAll); + + synchronized(mWindowMap) { + if (dumpAll) { + pw.println("-------------------------------------------------------------------------------"); + } + dumpPolicyLocked(fd, pw, args, dumpAll); + pw.println(); + if (dumpAll) { + pw.println("-------------------------------------------------------------------------------"); + } + dumpSessionsLocked(fd, pw, dumpAll); + pw.println(); + if (dumpAll) { + pw.println("-------------------------------------------------------------------------------"); + } + dumpTokensLocked(fd, pw, dumpAll); + pw.println(); + if (dumpAll) { + pw.println("-------------------------------------------------------------------------------"); } - pw.println(" Policy:"); - mPolicy.dump(" ", fd, pw, args); + dumpWindowsLocked(fd, pw, dumpAll, null); } } diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index cacb3e7aac9d..cdd0047f434f 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -1511,10 +1511,13 @@ final class WindowState implements WindowManagerPolicy.WindowState { } } - void dump(PrintWriter pw, String prefix) { + void dump(PrintWriter pw, String prefix, boolean dumpAll) { pw.print(prefix); pw.print("mSession="); pw.print(mSession); pw.print(" mClient="); pw.println(mClient.asBinder()); pw.print(prefix); pw.print("mAttrs="); pw.println(mAttrs); + pw.print(prefix); pw.print("Requested w="); pw.print(mRequestedWidth); + pw.print(" h="); pw.print(mRequestedHeight); + pw.print(" mLayoutSeq="); pw.println(mLayoutSeq); if (mAttachedWindow != null || mLayoutAttached) { pw.print(prefix); pw.print("mAttachedWindow="); pw.print(mAttachedWindow); pw.print(" mLayoutAttached="); pw.println(mLayoutAttached); @@ -1525,15 +1528,19 @@ final class WindowState implements WindowManagerPolicy.WindowState { pw.print(" mIsFloatingLayer="); pw.print(mIsFloatingLayer); pw.print(" mWallpaperVisible="); pw.println(mWallpaperVisible); } - pw.print(prefix); pw.print("mBaseLayer="); pw.print(mBaseLayer); - pw.print(" mSubLayer="); pw.print(mSubLayer); - pw.print(" mAnimLayer="); pw.print(mLayer); pw.print("+"); - pw.print((mTargetAppToken != null ? mTargetAppToken.animLayerAdjustment - : (mAppToken != null ? mAppToken.animLayerAdjustment : 0))); - pw.print("="); pw.print(mAnimLayer); - pw.print(" mLastLayer="); pw.println(mLastLayer); + if (dumpAll) { + pw.print(prefix); pw.print("mBaseLayer="); pw.print(mBaseLayer); + pw.print(" mSubLayer="); pw.print(mSubLayer); + pw.print(" mAnimLayer="); pw.print(mLayer); pw.print("+"); + pw.print((mTargetAppToken != null ? mTargetAppToken.animLayerAdjustment + : (mAppToken != null ? mAppToken.animLayerAdjustment : 0))); + pw.print("="); pw.print(mAnimLayer); + pw.print(" mLastLayer="); pw.println(mLastLayer); + } if (mSurface != null) { - pw.print(prefix); pw.print("mSurface="); pw.println(mSurface); + if (dumpAll) { + pw.print(prefix); pw.print("mSurface="); pw.println(mSurface); + } pw.print(prefix); pw.print("Surface: shown="); pw.print(mSurfaceShown); pw.print(" layer="); pw.print(mSurfaceLayer); pw.print(" alpha="); pw.print(mSurfaceAlpha); @@ -1542,19 +1549,21 @@ final class WindowState implements WindowManagerPolicy.WindowState { pw.print(") "); pw.print(mSurfaceW); pw.print(" x "); pw.println(mSurfaceH); } - pw.print(prefix); pw.print("mToken="); pw.println(mToken); - pw.print(prefix); pw.print("mRootToken="); pw.println(mRootToken); - if (mAppToken != null) { - pw.print(prefix); pw.print("mAppToken="); pw.println(mAppToken); - } - if (mTargetAppToken != null) { - pw.print(prefix); pw.print("mTargetAppToken="); pw.println(mTargetAppToken); + if (dumpAll) { + pw.print(prefix); pw.print("mToken="); pw.println(mToken); + pw.print(prefix); pw.print("mRootToken="); pw.println(mRootToken); + if (mAppToken != null) { + pw.print(prefix); pw.print("mAppToken="); pw.println(mAppToken); + } + if (mTargetAppToken != null) { + pw.print(prefix); pw.print("mTargetAppToken="); pw.println(mTargetAppToken); + } + pw.print(prefix); pw.print("mViewVisibility=0x"); + pw.print(Integer.toHexString(mViewVisibility)); + pw.print(" mLastHidden="); pw.print(mLastHidden); + pw.print(" mHaveFrame="); pw.print(mHaveFrame); + pw.print(" mObscured="); pw.println(mObscured); } - pw.print(prefix); pw.print("mViewVisibility=0x"); - pw.print(Integer.toHexString(mViewVisibility)); - pw.print(" mLastHidden="); pw.print(mLastHidden); - pw.print(" mHaveFrame="); pw.print(mHaveFrame); - pw.print(" mObscured="); pw.println(mObscured); if (!mPolicyVisibility || !mPolicyVisibilityAfterAnim || mAttachedHidden) { pw.print(prefix); pw.print("mPolicyVisibility="); pw.print(mPolicyVisibility); @@ -1565,47 +1574,50 @@ final class WindowState implements WindowManagerPolicy.WindowState { if (!mRelayoutCalled) { pw.print(prefix); pw.print("mRelayoutCalled="); pw.println(mRelayoutCalled); } - pw.print(prefix); pw.print("Requested w="); pw.print(mRequestedWidth); - pw.print(" h="); pw.print(mRequestedHeight); - pw.print(" mLayoutSeq="); pw.println(mLayoutSeq); if (mXOffset != 0 || mYOffset != 0) { pw.print(prefix); pw.print("Offsets x="); pw.print(mXOffset); pw.print(" y="); pw.println(mYOffset); } - pw.print(prefix); pw.print("mGivenContentInsets="); - mGivenContentInsets.printShortString(pw); - pw.print(" mGivenVisibleInsets="); - mGivenVisibleInsets.printShortString(pw); - pw.println(); - if (mTouchableInsets != 0 || mGivenInsetsPending) { - pw.print(prefix); pw.print("mTouchableInsets="); pw.print(mTouchableInsets); - pw.print(" mGivenInsetsPending="); pw.println(mGivenInsetsPending); + if (dumpAll) { + pw.print(prefix); pw.print("mGivenContentInsets="); + mGivenContentInsets.printShortString(pw); + pw.print(" mGivenVisibleInsets="); + mGivenVisibleInsets.printShortString(pw); + pw.println(); + if (mTouchableInsets != 0 || mGivenInsetsPending) { + pw.print(prefix); pw.print("mTouchableInsets="); pw.print(mTouchableInsets); + pw.print(" mGivenInsetsPending="); pw.println(mGivenInsetsPending); + } + pw.print(prefix); pw.print("mConfiguration="); pw.println(mConfiguration); } - pw.print(prefix); pw.print("mConfiguration="); pw.println(mConfiguration); pw.print(prefix); pw.print("mShownFrame="); mShownFrame.printShortString(pw); pw.println(); - pw.print(prefix); pw.print("mFrame="); mFrame.printShortString(pw); - pw.print(" last="); mLastFrame.printShortString(pw); - pw.println(); + if (dumpAll) { + pw.print(prefix); pw.print("mFrame="); mFrame.printShortString(pw); + pw.print(" last="); mLastFrame.printShortString(pw); + pw.println(); + } if (mEnforceSizeCompat) { pw.print(prefix); pw.print("mCompatFrame="); mCompatFrame.printShortString(pw); pw.println(); } - pw.print(prefix); pw.print("mContainingFrame="); - mContainingFrame.printShortString(pw); - pw.print(" mParentFrame="); - mParentFrame.printShortString(pw); - pw.print(" mDisplayFrame="); - mDisplayFrame.printShortString(pw); - pw.println(); - pw.print(prefix); pw.print("mContentFrame="); mContentFrame.printShortString(pw); - pw.print(" mVisibleFrame="); mVisibleFrame.printShortString(pw); - pw.println(); - pw.print(prefix); pw.print("mContentInsets="); mContentInsets.printShortString(pw); - pw.print(" last="); mLastContentInsets.printShortString(pw); - pw.print(" mVisibleInsets="); mVisibleInsets.printShortString(pw); - pw.print(" last="); mLastVisibleInsets.printShortString(pw); - pw.println(); + if (dumpAll) { + pw.print(prefix); pw.print("mContainingFrame="); + mContainingFrame.printShortString(pw); + pw.print(" mParentFrame="); + mParentFrame.printShortString(pw); + pw.print(" mDisplayFrame="); + mDisplayFrame.printShortString(pw); + pw.println(); + pw.print(prefix); pw.print("mContentFrame="); mContentFrame.printShortString(pw); + pw.print(" mVisibleFrame="); mVisibleFrame.printShortString(pw); + pw.println(); + pw.print(prefix); pw.print("mContentInsets="); mContentInsets.printShortString(pw); + pw.print(" last="); mLastContentInsets.printShortString(pw); + pw.print(" mVisibleInsets="); mVisibleInsets.printShortString(pw); + pw.print(" last="); mLastVisibleInsets.printShortString(pw); + pw.println(); + } if (mAnimating || mLocalAnimating || mAnimationIsEntrance || mAnimation != null) { pw.print(prefix); pw.print("mAnimating="); pw.print(mAnimating); @@ -1632,10 +1644,12 @@ final class WindowState implements WindowManagerPolicy.WindowState { pw.print(" mDsDy="); pw.print(mDsDy); pw.print(" mDtDy="); pw.println(mDtDy); } - pw.print(prefix); pw.print("mDrawPending="); pw.print(mDrawPending); - pw.print(" mCommitDrawPending="); pw.print(mCommitDrawPending); - pw.print(" mReadyToShow="); pw.print(mReadyToShow); - pw.print(" mHasDrawn="); pw.println(mHasDrawn); + if (dumpAll) { + pw.print(prefix); pw.print("mDrawPending="); pw.print(mDrawPending); + pw.print(" mCommitDrawPending="); pw.print(mCommitDrawPending); + pw.print(" mReadyToShow="); pw.print(mReadyToShow); + pw.print(" mHasDrawn="); pw.println(mHasDrawn); + } if (mExiting || mRemoveOnExit || mDestroying || mRemoved) { pw.print(prefix); pw.print("mExiting="); pw.print(mExiting); pw.print(" mRemoveOnExit="); pw.print(mRemoveOnExit); |