Merge "Revert "Revert "Add a timeout state to frozen windows"""
This commit is contained in:
committed by
Android (Google) Code Review
commit
2070646faf
@@ -496,7 +496,12 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
int mLastDisplayFreezeDuration = 0;
|
||||
Object mLastFinishedFreezeSource = null;
|
||||
boolean mWaitingForConfig = false;
|
||||
boolean mWindowsFreezingScreen = false;
|
||||
|
||||
final static int WINDOWS_FREEZING_SCREENS_NONE = 0;
|
||||
final static int WINDOWS_FREEZING_SCREENS_ACTIVE = 1;
|
||||
final static int WINDOWS_FREEZING_SCREENS_TIMEOUT = 2;
|
||||
private int mWindowsFreezingScreen = WINDOWS_FREEZING_SCREENS_NONE;
|
||||
|
||||
boolean mClientFreezingScreen = false;
|
||||
int mAppsFreezingScreen = 0;
|
||||
int mLastWindowForcedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
|
||||
@@ -4699,7 +4704,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
if (mAppsFreezingScreen == 1) {
|
||||
startFreezingDisplayLocked(false, 0, 0);
|
||||
mH.removeMessages(H.APP_FREEZE_TIMEOUT);
|
||||
mH.sendEmptyMessageDelayed(H.APP_FREEZE_TIMEOUT, 5000);
|
||||
mH.sendEmptyMessageDelayed(H.APP_FREEZE_TIMEOUT, 2000);
|
||||
}
|
||||
}
|
||||
final int N = wtoken.allAppWindows.size();
|
||||
@@ -6415,7 +6420,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
mAltOrientation = altOrientation;
|
||||
mPolicy.setRotationLw(mRotation);
|
||||
|
||||
mWindowsFreezingScreen = true;
|
||||
mWindowsFreezingScreen = WINDOWS_FREEZING_SCREENS_ACTIVE;
|
||||
mH.removeMessages(H.WINDOW_FREEZE_TIMEOUT);
|
||||
mH.sendEmptyMessageDelayed(H.WINDOW_FREEZE_TIMEOUT, WINDOW_FREEZE_TIMEOUT_DURATION);
|
||||
mWaitingForConfig = true;
|
||||
@@ -7784,6 +7789,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
// TODO(multidisplay): Can non-default displays rotate?
|
||||
synchronized (mWindowMap) {
|
||||
Slog.w(TAG, "Window freeze timeout expired.");
|
||||
mWindowsFreezingScreen = WINDOWS_FREEZING_SCREENS_TIMEOUT;
|
||||
final WindowList windows = getDefaultWindowListLocked();
|
||||
int i = windows.size();
|
||||
while (i > 0) {
|
||||
@@ -7851,6 +7857,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
case APP_FREEZE_TIMEOUT: {
|
||||
synchronized (mWindowMap) {
|
||||
Slog.w(TAG, "App freeze timeout expired.");
|
||||
mWindowsFreezingScreen = WINDOWS_FREEZING_SCREENS_TIMEOUT;
|
||||
final int numStacks = mStackIdToStack.size();
|
||||
for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
|
||||
final TaskStack stack = mStackIdToStack.valueAt(stackNdx);
|
||||
@@ -8914,8 +8921,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
w.mOrientationChanging = true;
|
||||
w.mLastFreezeDuration = 0;
|
||||
mInnerFields.mOrientationChangeComplete = false;
|
||||
if (!mWindowsFreezingScreen) {
|
||||
mWindowsFreezingScreen = true;
|
||||
if (mWindowsFreezingScreen == WINDOWS_FREEZING_SCREENS_NONE) {
|
||||
mWindowsFreezingScreen = WINDOWS_FREEZING_SCREENS_ACTIVE;
|
||||
// XXX should probably keep timeout from
|
||||
// when we first froze the display.
|
||||
mH.removeMessages(H.WINDOW_FREEZE_TIMEOUT);
|
||||
@@ -9905,8 +9912,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
"With display frozen, orientationChangeComplete="
|
||||
+ mInnerFields.mOrientationChangeComplete);
|
||||
if (mInnerFields.mOrientationChangeComplete) {
|
||||
if (mWindowsFreezingScreen) {
|
||||
mWindowsFreezingScreen = false;
|
||||
if (mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_NONE) {
|
||||
mWindowsFreezingScreen = WINDOWS_FREEZING_SCREENS_NONE;
|
||||
mLastFinishedFreezeSource = mInnerFields.mLastWindowFreezeSource;
|
||||
mH.removeMessages(H.WINDOW_FREEZE_TIMEOUT);
|
||||
}
|
||||
@@ -10188,7 +10195,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
} else {
|
||||
mInnerFields.mOrientationChangeComplete = true;
|
||||
mInnerFields.mLastWindowFreezeSource = mAnimator.mLastWindowFreezeSource;
|
||||
if (mWindowsFreezingScreen) {
|
||||
if (mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_NONE) {
|
||||
doRequest = true;
|
||||
}
|
||||
}
|
||||
@@ -10524,7 +10531,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
return;
|
||||
}
|
||||
|
||||
if (mWaitingForConfig || mAppsFreezingScreen > 0 || mWindowsFreezingScreen
|
||||
if (mWaitingForConfig || mAppsFreezingScreen > 0
|
||||
|| mWindowsFreezingScreen == WINDOWS_FREEZING_SCREENS_ACTIVE
|
||||
|| mClientFreezingScreen) {
|
||||
if (DEBUG_ORIENTATION) Slog.d(TAG,
|
||||
"stopFreezingDisplayLocked: Returning mWaitingForConfig=" + mWaitingForConfig
|
||||
|
||||
Reference in New Issue
Block a user