From 400110902e1680eebe70aed583789870e31758f6 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Thu, 22 Sep 2011 13:37:48 -0700 Subject: Fix issue #5355844: PowerManager does not call screenTurningOn after boot. Be more explicit about initialization -- power manager never sends screen update when first initializing, phone window manager retreives current screen state and applies that itself when initializing. Change-Id: I8294ed36d700e186c1637754df8c8183721c15dd --- .../internal/policy/impl/PhoneWindowManager.java | 60 ++++++++++++++-------- 1 file changed, 39 insertions(+), 21 deletions(-) (limited to 'policy/src/com/android/internal') diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index a977618..b0abd97 100755 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -716,6 +716,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Controls rotation and the like. initializeHdmiState(); + + // Match current screen state. + if (mPowerManager.isScreenOn()) { + screenTurningOn(null); + } else { + screenTurnedOff(WindowManagerPolicy.OFF_BECAUSE_OF_USER); + } } public void setInitialDisplaySize(int width, int height) { @@ -2780,31 +2787,42 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** {@inheritDoc} */ public void screenTurningOn(final ScreenOnListener screenOnListener) { EventLog.writeEvent(70000, 1); - //Slog.i(TAG, "Screen turning on..."); - mKeyguardMediator.onScreenTurnedOn(new KeyguardViewManager.ShowListener() { - @Override public void onShown(IBinder windowToken) { - if (windowToken != null) { - try { - mWindowManager.waitForWindowDrawn(windowToken, new IRemoteCallback.Stub() { - @Override public void sendResult(Bundle data) { - Slog.i(TAG, "Lock screen displayed!"); - screenOnListener.onScreenOn(); - synchronized (mLock) { - mScreenOnFully = true; + if (false) { + RuntimeException here = new RuntimeException("here"); + here.fillInStackTrace(); + Slog.i(TAG, "Screen turning on...", here); + } + if (screenOnListener != null) { + mKeyguardMediator.onScreenTurnedOn(new KeyguardViewManager.ShowListener() { + @Override public void onShown(IBinder windowToken) { + if (windowToken != null) { + try { + mWindowManager.waitForWindowDrawn(windowToken, + new IRemoteCallback.Stub() { + @Override public void sendResult(Bundle data) { + Slog.i(TAG, "Lock screen displayed!"); + screenOnListener.onScreenOn(); + synchronized (mLock) { + mScreenOnFully = true; + } } - } - }); - } catch (RemoteException e) { - } - } else { - Slog.i(TAG, "No lock screen!"); - screenOnListener.onScreenOn(); - synchronized (mLock) { - mScreenOnFully = true; + }); + } catch (RemoteException e) { + } + } else { + Slog.i(TAG, "No lock screen!"); + screenOnListener.onScreenOn(); + synchronized (mLock) { + mScreenOnFully = true; + } } } + }); + } else { + synchronized (mLock) { + mScreenOnFully = true; } - }); + } synchronized (mLock) { mScreenOnEarly = true; updateOrientationListenerLp(); -- cgit v1.1