Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +19 −9 Original line number Diff line number Diff line Loading @@ -243,7 +243,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } /** Amount of time (in milliseconds) to wait for windows drawn before powering on. */ static final int WAITING_FOR_DRAWN_TIMEOUT = 1000; static final int WAITING_FOR_DRAWN_TIMEOUT = 500; /** * Lock protecting internal state. Must not call out into window Loading Loading @@ -837,12 +837,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { return; } // Could have been invoked due to screen turning on or off or //change of the currently visible window's orientation // change of the currently visible window's orientation. if (localLOGV) Slog.v(TAG, "mScreenOnEarly=" + mScreenOnEarly + ", mAwake=" + mAwake + ", mCurrentAppOrientation=" + mCurrentAppOrientation + ", mOrientationSensorEnabled=" + mOrientationSensorEnabled); + ", mOrientationSensorEnabled=" + mOrientationSensorEnabled + ", mKeyguardDrawComplete=" + mKeyguardDrawComplete + ", mWindowManagerDrawComplete=" + mWindowManagerDrawComplete); boolean disable = true; if (mScreenOnEarly && mAwake) { // Note: We postpone the rotating of the screen until the keyguard as well as the // window manager have reported a draw complete. if (mScreenOnEarly && mAwake && mKeyguardDrawComplete && mWindowManagerDrawComplete) { if (needSensorRunningLp()) { disable = false; //enable listener if not already enabled Loading Loading @@ -5369,7 +5374,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private void finishKeyguardDrawn() { synchronized (mLock) { if (!mAwake || mKeyguardDrawComplete) { return; // spurious return; // We are not awake yet or we have already informed of this event. } mKeyguardDrawComplete = true; Loading Loading @@ -5407,18 +5412,18 @@ public class PhoneWindowManager implements WindowManagerPolicy { mScreenOnFully = false; mWindowManagerDrawComplete = false; mScreenOnListener = screenOnListener; updateOrientationListenerLp(); } mWindowManagerInternal.waitForAllWindowsDrawn(mWindowManagerDrawCallback, WAITING_FOR_DRAWN_TIMEOUT); // ... eventually calls finishWindowsDrawn // ... eventually calls finishWindowsDrawn which will finalize our screen turn on // as well as enabling the orientation change logic/sensor. } private void finishWindowsDrawn() { synchronized (mLock) { if (!mScreenOnEarly || mWindowManagerDrawComplete) { return; // spurious return; // Screen is not turned on or we did already handle this case earlier. } mWindowManagerDrawComplete = true; Loading @@ -5428,6 +5433,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void finishScreenTurningOn() { synchronized (mLock) { // We have just finished drawing screen content. Since the orientation listener // gets only installed when all windows are drawn, we try to install it again. updateOrientationListenerLp(); } final ScreenOnListener listener; final boolean enableScreen; synchronized (mLock) { Loading Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +19 −9 Original line number Diff line number Diff line Loading @@ -243,7 +243,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } /** Amount of time (in milliseconds) to wait for windows drawn before powering on. */ static final int WAITING_FOR_DRAWN_TIMEOUT = 1000; static final int WAITING_FOR_DRAWN_TIMEOUT = 500; /** * Lock protecting internal state. Must not call out into window Loading Loading @@ -837,12 +837,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { return; } // Could have been invoked due to screen turning on or off or //change of the currently visible window's orientation // change of the currently visible window's orientation. if (localLOGV) Slog.v(TAG, "mScreenOnEarly=" + mScreenOnEarly + ", mAwake=" + mAwake + ", mCurrentAppOrientation=" + mCurrentAppOrientation + ", mOrientationSensorEnabled=" + mOrientationSensorEnabled); + ", mOrientationSensorEnabled=" + mOrientationSensorEnabled + ", mKeyguardDrawComplete=" + mKeyguardDrawComplete + ", mWindowManagerDrawComplete=" + mWindowManagerDrawComplete); boolean disable = true; if (mScreenOnEarly && mAwake) { // Note: We postpone the rotating of the screen until the keyguard as well as the // window manager have reported a draw complete. if (mScreenOnEarly && mAwake && mKeyguardDrawComplete && mWindowManagerDrawComplete) { if (needSensorRunningLp()) { disable = false; //enable listener if not already enabled Loading Loading @@ -5369,7 +5374,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private void finishKeyguardDrawn() { synchronized (mLock) { if (!mAwake || mKeyguardDrawComplete) { return; // spurious return; // We are not awake yet or we have already informed of this event. } mKeyguardDrawComplete = true; Loading Loading @@ -5407,18 +5412,18 @@ public class PhoneWindowManager implements WindowManagerPolicy { mScreenOnFully = false; mWindowManagerDrawComplete = false; mScreenOnListener = screenOnListener; updateOrientationListenerLp(); } mWindowManagerInternal.waitForAllWindowsDrawn(mWindowManagerDrawCallback, WAITING_FOR_DRAWN_TIMEOUT); // ... eventually calls finishWindowsDrawn // ... eventually calls finishWindowsDrawn which will finalize our screen turn on // as well as enabling the orientation change logic/sensor. } private void finishWindowsDrawn() { synchronized (mLock) { if (!mScreenOnEarly || mWindowManagerDrawComplete) { return; // spurious return; // Screen is not turned on or we did already handle this case earlier. } mWindowManagerDrawComplete = true; Loading @@ -5428,6 +5433,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void finishScreenTurningOn() { synchronized (mLock) { // We have just finished drawing screen content. Since the orientation listener // gets only installed when all windows are drawn, we try to install it again. updateOrientationListenerLp(); } final ScreenOnListener listener; final boolean enableScreen; synchronized (mLock) { Loading