diff options
author | Dianne Hackborn <hackbod@google.com> | 2011-09-22 13:37:48 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2011-09-22 13:37:48 -0700 |
commit | 400110902e1680eebe70aed583789870e31758f6 (patch) | |
tree | d5433bd790aaadd6598852eb37dbb64cb9db2f1e | |
parent | e690f565fd1926885f2b12c2aee2dddc5ba99983 (diff) | |
download | frameworks_base-400110902e1680eebe70aed583789870e31758f6.zip frameworks_base-400110902e1680eebe70aed583789870e31758f6.tar.gz frameworks_base-400110902e1680eebe70aed583789870e31758f6.tar.bz2 |
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
-rwxr-xr-x | policy/src/com/android/internal/policy/impl/PhoneWindowManager.java | 60 | ||||
-rw-r--r-- | services/java/com/android/server/PowerManagerService.java | 10 |
2 files changed, 47 insertions, 23 deletions
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(); diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 785db98..78dbbd6 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -564,6 +564,7 @@ public class PowerManagerService extends IPowerManager.Stub // We make sure to start out with the screen on due to user activity. // (They did just boot their device, after all.) forceUserActivityLocked(); + mInitialized = true; } } @@ -1330,6 +1331,13 @@ public class PowerManagerService extends IPowerManager.Stub // (And also do not send needless broadcasts about the screen.) return; } + + if (DEBUG_SCREEN_ON) { + RuntimeException here = new RuntimeException("here"); + here.fillInStackTrace(); + Slog.i(TAG, "sendNotificationLocked: " + on, here); + } + if (!on) { mStillNeedSleepNotification = false; } @@ -1845,8 +1853,6 @@ public class PowerManagerService extends IPowerManager.Stub mPowerState = (mPowerState & ~LIGHTS_MASK) | (newState & LIGHTS_MASK); updateNativePowerStateLocked(); - - mInitialized = true; } } |