summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2011-09-22 13:37:48 -0700
committerDianne Hackborn <hackbod@google.com>2011-09-22 13:37:48 -0700
commit400110902e1680eebe70aed583789870e31758f6 (patch)
treed5433bd790aaadd6598852eb37dbb64cb9db2f1e
parente690f565fd1926885f2b12c2aee2dddc5ba99983 (diff)
downloadframeworks_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-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java60
-rw-r--r--services/java/com/android/server/PowerManagerService.java10
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;
}
}