From 951e27f344996ee8cba4d6defbe5e4fab3a08284 Mon Sep 17 00:00:00 2001 From: tiger_huang Date: Tue, 7 Apr 2015 17:35:13 +0800 Subject: [PATCH] Prevent windows from freezing screen while timeout The original logic lets windows be able to freeze screen again (by setting win.mOrientationChanging=true) after WINDOW_FREEZE_TIMEOUT is triggered before mInnerFields.mOrientationChangeComplete is set to true. In this case, we would lose the protection of WINDOW_FREEZE_TIMEOUT. If the app never finishes drawing the window, the screen would keep freezing that the user cannot operate the device. Change-Id: I45a0a9e4b3f8d5b0b0043229bfa4890236ae8ab2 --- services/core/java/com/android/server/wm/WindowManagerService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8008064cafa7..8998d39134bc 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -4717,7 +4717,8 @@ public class WindowManagerService extends IWindowManager.Stub WindowState w = wtoken.allAppWindows.get(i); if (w.mAppFreezing) { w.mAppFreezing = false; - if (w.mHasSurface && !w.mOrientationChanging) { + if (w.mHasSurface && !w.mOrientationChanging + && mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_TIMEOUT) { if (DEBUG_ORIENTATION) Slog.v(TAG, "set mOrientationChanging of " + w); w.mOrientationChanging = true; mInnerFields.mOrientationChangeComplete = false; @@ -9083,7 +9084,7 @@ public class WindowManagerService extends IWindowManager.Stub // If the screen is currently frozen or off, then keep // it frozen/off until this window draws at its new // orientation. - if (!okToDisplay()) { + if (!okToDisplay() && mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_TIMEOUT) { if (DEBUG_ORIENTATION) Slog.v(TAG, "Changing surface while display frozen: " + w); w.mOrientationChanging = true; w.mLastFreezeDuration = 0; -- 2.11.0