Loading core/java/android/view/ViewRootImpl.java +9 −0 Original line number Diff line number Diff line Loading @@ -562,6 +562,11 @@ public final class ViewRootImpl implements ViewParent, } attrs = mWindowAttributes; setTag(); if ((mClientWindowLayoutFlags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) != 0 && (attrs.flags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) == 0) { Slog.d(mTag, "setView: FLAG_KEEP_SCREEN_ON changed from true to false!!!"); } // Keep track of the actual window flags supplied by the client. mClientWindowLayoutFlags = attrs.flags; Loading Loading @@ -889,6 +894,10 @@ public final class ViewRootImpl implements ViewParent, final int oldInsetBottom = mWindowAttributes.surfaceInsets.bottom; final int oldSoftInputMode = mWindowAttributes.softInputMode; final boolean oldHasManualSurfaceInsets = mWindowAttributes.hasManualSurfaceInsets; if ((mClientWindowLayoutFlags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) != 0 && (attrs.flags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) == 0) { Slog.d(mTag, "setLayoutParams: FLAG_KEEP_SCREEN_ON from true to false!!!"); } // Keep track of the actual window flags supplied by the client. mClientWindowLayoutFlags = attrs.flags; Loading services/core/java/com/android/server/wm/WindowManagerDebugConfig.java +3 −0 Original line number Diff line number Diff line Loading @@ -73,4 +73,7 @@ public class WindowManagerDebugConfig { static final boolean SHOW_LIGHT_TRANSACTIONS = false || SHOW_TRANSACTIONS; static final boolean SHOW_STACK_CRAWLS = false; static final boolean DEBUG_WINDOW_CROP = false; static final String TAG_KEEP_SCREEN_ON = "DebugKeepScreenOn"; static final boolean DEBUG_KEEP_SCREEN_ON = true; } services/core/java/com/android/server/wm/WindowManagerService.java +21 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT_METHOD; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEYGUARD; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEEP_SCREEN_ON; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_RESIZE; Loading @@ -240,6 +241,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.SHOW_STACK_CRAWLS; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_SURFACE_ALLOC; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_VERBOSE_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_KEEP_SCREEN_ON; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING; Loading Loading @@ -509,6 +511,10 @@ public class WindowManagerService extends IWindowManager.Stub boolean mShowingBootMessages = false; boolean mBootAnimationStopped = false; // Following variables are for debugging screen wakelock only. WindowState mLastWakeLockHoldingWindow = null; WindowState mLastWakeLockObscuringWindow = null; /** Dump of the windows and app tokens at the time of the last ANR. Cleared after * LAST_ANR_LIFETIME_DURATION_MSECS */ String mLastANRState; Loading Loading @@ -9279,9 +9285,21 @@ public class WindowManagerService extends IWindowManager.Stub final boolean state = mHoldingScreenWakeLock.isHeld(); if (hold != state) { if (hold) { if (DEBUG_KEEP_SCREEN_ON) { Slog.d(TAG_KEEP_SCREEN_ON, "Acquiring screen wakelock due to " + mWindowPlacerLocked.mHoldScreenWindow); } mLastWakeLockHoldingWindow = mWindowPlacerLocked.mHoldScreenWindow; mLastWakeLockObscuringWindow = null; mHoldingScreenWakeLock.acquire(); mPolicy.keepScreenOnStartedLw(); } else { if (DEBUG_KEEP_SCREEN_ON) { Slog.d(TAG_KEEP_SCREEN_ON, "Releasing screen wakelock, obscured by " + mWindowPlacerLocked.mObsuringWindow); } mLastWakeLockHoldingWindow = null; mLastWakeLockObscuringWindow = mWindowPlacerLocked.mObsuringWindow; mPolicy.keepScreenOnStoppedLw(); mHoldingScreenWakeLock.release(); } Loading Loading @@ -10212,6 +10230,9 @@ public class WindowManagerService extends IWindowManager.Stub pw.print(mLastFinishedFreezeSource); } pw.println(); pw.print(" mLastWakeLockHoldingWindow=");pw.print(mLastWakeLockHoldingWindow); pw.print(" mLastWakeLockObscuringWindow="); pw.print(mLastWakeLockObscuringWindow); pw.println(); mInputMonitor.dump(pw, " "); Loading services/core/java/com/android/server/wm/WindowSurfacePlacer.java +21 −0 Original line number Diff line number Diff line Loading @@ -31,8 +31,10 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_TOKEN_MOVEMEN import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WALLPAPER_LIGHT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_TRACE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEEP_SCREEN_ON; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_LIGHT_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_KEEP_SCREEN_ON; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.H.DO_TRAVERSAL; Loading Loading @@ -132,6 +134,12 @@ class WindowSurfacePlacer { private boolean mSustainedPerformanceModeEnabled = false; private boolean mSustainedPerformanceModeCurrent = false; // Following variables are for debugging screen wakelock only. // Last window that requires screen wakelock WindowState mHoldScreenWindow = null; // Last window that obscures all windows below WindowState mObsuringWindow = null; private static final class LayerAndToken { public int layer; public AppWindowToken token; Loading Loading @@ -288,6 +296,8 @@ class WindowSurfacePlacer { } mHoldScreen = null; mHoldScreenWindow = null; mObsuringWindow = null; mScreenBrightness = -1; mButtonBrightness = -1; mUserActivityTimeout = -1; Loading Loading @@ -1425,12 +1435,21 @@ class WindowSurfacePlacer { // This window completely covers everything behind it, // so we want to leave all of them as undimmed (for // performance reasons). if (!mObscured) { mObsuringWindow = w; } mObscured = true; } if (w.mHasSurface) { if ((attrFlags&FLAG_KEEP_SCREEN_ON) != 0) { mHoldScreen = w.mSession; mHoldScreenWindow = w; } else if (DEBUG_KEEP_SCREEN_ON && w == mService.mLastWakeLockHoldingWindow) { Slog.d(TAG_KEEP_SCREEN_ON, "handleNotObscuredLocked: " + w + " was holding " + "screen wakelock but no longer has FLAG_KEEP_SCREEN_ON!!! called by" + Debug.getCallers(10)); } if (!mSyswin && w.mAttrs.screenBrightness >= 0 && mScreenBrightness < 0) { Loading Loading @@ -1686,5 +1705,7 @@ class WindowSurfacePlacer { public void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("mTraversalScheduled="); pw.println(mTraversalScheduled); pw.print(prefix); pw.print("mHoldScreenWindow="); pw.println(mHoldScreenWindow); pw.print(prefix); pw.print("mObsuringWindow="); pw.println(mObsuringWindow); } } Loading
core/java/android/view/ViewRootImpl.java +9 −0 Original line number Diff line number Diff line Loading @@ -562,6 +562,11 @@ public final class ViewRootImpl implements ViewParent, } attrs = mWindowAttributes; setTag(); if ((mClientWindowLayoutFlags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) != 0 && (attrs.flags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) == 0) { Slog.d(mTag, "setView: FLAG_KEEP_SCREEN_ON changed from true to false!!!"); } // Keep track of the actual window flags supplied by the client. mClientWindowLayoutFlags = attrs.flags; Loading Loading @@ -889,6 +894,10 @@ public final class ViewRootImpl implements ViewParent, final int oldInsetBottom = mWindowAttributes.surfaceInsets.bottom; final int oldSoftInputMode = mWindowAttributes.softInputMode; final boolean oldHasManualSurfaceInsets = mWindowAttributes.hasManualSurfaceInsets; if ((mClientWindowLayoutFlags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) != 0 && (attrs.flags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) == 0) { Slog.d(mTag, "setLayoutParams: FLAG_KEEP_SCREEN_ON from true to false!!!"); } // Keep track of the actual window flags supplied by the client. mClientWindowLayoutFlags = attrs.flags; Loading
services/core/java/com/android/server/wm/WindowManagerDebugConfig.java +3 −0 Original line number Diff line number Diff line Loading @@ -73,4 +73,7 @@ public class WindowManagerDebugConfig { static final boolean SHOW_LIGHT_TRANSACTIONS = false || SHOW_TRANSACTIONS; static final boolean SHOW_STACK_CRAWLS = false; static final boolean DEBUG_WINDOW_CROP = false; static final String TAG_KEEP_SCREEN_ON = "DebugKeepScreenOn"; static final boolean DEBUG_KEEP_SCREEN_ON = true; }
services/core/java/com/android/server/wm/WindowManagerService.java +21 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT_METHOD; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEYGUARD; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEEP_SCREEN_ON; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_RESIZE; Loading @@ -240,6 +241,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.SHOW_STACK_CRAWLS; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_SURFACE_ALLOC; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_VERBOSE_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_KEEP_SCREEN_ON; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING; Loading Loading @@ -509,6 +511,10 @@ public class WindowManagerService extends IWindowManager.Stub boolean mShowingBootMessages = false; boolean mBootAnimationStopped = false; // Following variables are for debugging screen wakelock only. WindowState mLastWakeLockHoldingWindow = null; WindowState mLastWakeLockObscuringWindow = null; /** Dump of the windows and app tokens at the time of the last ANR. Cleared after * LAST_ANR_LIFETIME_DURATION_MSECS */ String mLastANRState; Loading Loading @@ -9279,9 +9285,21 @@ public class WindowManagerService extends IWindowManager.Stub final boolean state = mHoldingScreenWakeLock.isHeld(); if (hold != state) { if (hold) { if (DEBUG_KEEP_SCREEN_ON) { Slog.d(TAG_KEEP_SCREEN_ON, "Acquiring screen wakelock due to " + mWindowPlacerLocked.mHoldScreenWindow); } mLastWakeLockHoldingWindow = mWindowPlacerLocked.mHoldScreenWindow; mLastWakeLockObscuringWindow = null; mHoldingScreenWakeLock.acquire(); mPolicy.keepScreenOnStartedLw(); } else { if (DEBUG_KEEP_SCREEN_ON) { Slog.d(TAG_KEEP_SCREEN_ON, "Releasing screen wakelock, obscured by " + mWindowPlacerLocked.mObsuringWindow); } mLastWakeLockHoldingWindow = null; mLastWakeLockObscuringWindow = mWindowPlacerLocked.mObsuringWindow; mPolicy.keepScreenOnStoppedLw(); mHoldingScreenWakeLock.release(); } Loading Loading @@ -10212,6 +10230,9 @@ public class WindowManagerService extends IWindowManager.Stub pw.print(mLastFinishedFreezeSource); } pw.println(); pw.print(" mLastWakeLockHoldingWindow=");pw.print(mLastWakeLockHoldingWindow); pw.print(" mLastWakeLockObscuringWindow="); pw.print(mLastWakeLockObscuringWindow); pw.println(); mInputMonitor.dump(pw, " "); Loading
services/core/java/com/android/server/wm/WindowSurfacePlacer.java +21 −0 Original line number Diff line number Diff line Loading @@ -31,8 +31,10 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_TOKEN_MOVEMEN import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WALLPAPER_LIGHT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_TRACE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEEP_SCREEN_ON; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_LIGHT_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_KEEP_SCREEN_ON; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.H.DO_TRAVERSAL; Loading Loading @@ -132,6 +134,12 @@ class WindowSurfacePlacer { private boolean mSustainedPerformanceModeEnabled = false; private boolean mSustainedPerformanceModeCurrent = false; // Following variables are for debugging screen wakelock only. // Last window that requires screen wakelock WindowState mHoldScreenWindow = null; // Last window that obscures all windows below WindowState mObsuringWindow = null; private static final class LayerAndToken { public int layer; public AppWindowToken token; Loading Loading @@ -288,6 +296,8 @@ class WindowSurfacePlacer { } mHoldScreen = null; mHoldScreenWindow = null; mObsuringWindow = null; mScreenBrightness = -1; mButtonBrightness = -1; mUserActivityTimeout = -1; Loading Loading @@ -1425,12 +1435,21 @@ class WindowSurfacePlacer { // This window completely covers everything behind it, // so we want to leave all of them as undimmed (for // performance reasons). if (!mObscured) { mObsuringWindow = w; } mObscured = true; } if (w.mHasSurface) { if ((attrFlags&FLAG_KEEP_SCREEN_ON) != 0) { mHoldScreen = w.mSession; mHoldScreenWindow = w; } else if (DEBUG_KEEP_SCREEN_ON && w == mService.mLastWakeLockHoldingWindow) { Slog.d(TAG_KEEP_SCREEN_ON, "handleNotObscuredLocked: " + w + " was holding " + "screen wakelock but no longer has FLAG_KEEP_SCREEN_ON!!! called by" + Debug.getCallers(10)); } if (!mSyswin && w.mAttrs.screenBrightness >= 0 && mScreenBrightness < 0) { Loading Loading @@ -1686,5 +1705,7 @@ class WindowSurfacePlacer { public void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("mTraversalScheduled="); pw.println(mTraversalScheduled); pw.print(prefix); pw.print("mHoldScreenWindow="); pw.println(mHoldScreenWindow); pw.print(prefix); pw.print("mObsuringWindow="); pw.println(mObsuringWindow); } }