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
This commit is contained in:
committed by
Olawale Ogunwale
parent
393f89f26d
commit
951e27f344
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user