diff options
author | 2016-03-12 11:07:58 -0800 | |
---|---|---|
committer | 2016-03-14 09:21:26 -0700 | |
commit | e89eeac54766633e482b51c15e99d2d93843ce26 (patch) | |
tree | 11d08998928d4b8170927c6d197d8d2dd4b4e3f6 | |
parent | d646b3d67fc78c5daddb357cad2b92bfef6e72b8 (diff) |
Added input freeze reason string.
To help debug b/27576902
Bug: 27576902
Change-Id: Ic3d2bb25842593efb11e195a1bbe19bed3bf7067
-rw-r--r-- | services/core/java/com/android/server/wm/InputMonitor.java | 18 | ||||
-rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 3 |
2 files changed, 20 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java index e42658e5a2f7..b70218059b74 100644 --- a/services/core/java/com/android/server/wm/InputMonitor.java +++ b/services/core/java/com/android/server/wm/InputMonitor.java @@ -24,6 +24,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.app.ActivityManagerNative; import android.graphics.Rect; +import android.os.Debug; import android.os.RemoteException; import android.util.Log; import android.util.Slog; @@ -36,6 +37,7 @@ import com.android.server.input.InputApplicationHandle; import com.android.server.input.InputManagerService; import com.android.server.input.InputWindowHandle; +import java.io.PrintWriter; import java.util.Arrays; final class InputMonitor implements InputManagerService.WindowManagerCallbacks { @@ -47,6 +49,9 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks { // When true, prevents input dispatch from proceeding until set to false again. private boolean mInputDispatchFrozen; + // The reason the input is currently frozen or null if the input isn't frozen. + private String mInputFreezeReason = null; + // When true, input dispatch proceeds normally. Otherwise all events are dropped. // Initially false, so that input does not get dispatched until boot is finished at // which point the ActivityManager will enable dispatching. @@ -474,12 +479,16 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks { } public void freezeInputDispatchingLw() { - if (! mInputDispatchFrozen) { + if (!mInputDispatchFrozen) { if (DEBUG_INPUT) { Slog.v(TAG_WM, "Freezing input dispatching"); } mInputDispatchFrozen = true; + + if (DEBUG_INPUT || true) { + mInputFreezeReason = Debug.getCallers(6); + } updateInputDispatchModeLw(); } } @@ -491,6 +500,7 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks { } mInputDispatchFrozen = false; + mInputFreezeReason = null; updateInputDispatchModeLw(); } } @@ -509,4 +519,10 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks { private void updateInputDispatchModeLw() { mService.mInputManager.setInputDispatchMode(mInputDispatchEnabled, mInputDispatchFrozen); } + + void dump(PrintWriter pw, String prefix) { + if (mInputFreezeReason != null) { + pw.println(prefix + "mInputFreezeReason=" + mInputFreezeReason); + } + } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 304449dd9f98..3ef6286ac8e3 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -9907,6 +9907,9 @@ public class WindowManagerService extends IWindowManager.Stub pw.print(mLastFinishedFreezeSource); } pw.println(); + + mInputMonitor.dump(pw, " "); + if (dumpAll) { pw.print(" mSystemDecorLayer="); pw.print(mSystemDecorLayer); pw.print(" mScreenRect="); pw.println(mScreenRect.toShortString()); |