summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2015-03-19 14:37:11 -0700
committerAnthony Hugh <ahugh@google.com>2015-03-23 12:02:52 -0700
commit11cc1f166dfc18d6d2338b93f7526a0911c7bb67 (patch)
tree1db33f1b7f0b436d3e7279105dcf0ff0ad0e7c90 /services
parent104a29b6b5fe6e454787053ca72950dbbc4d424b (diff)
downloadframeworks_base-11cc1f166dfc18d6d2338b93f7526a0911c7bb67.zip
frameworks_base-11cc1f166dfc18d6d2338b93f7526a0911c7bb67.tar.gz
frameworks_base-11cc1f166dfc18d6d2338b93f7526a0911c7bb67.tar.bz2
DO NOT MERGE: Set the appliance (tv/watch) in the configuration earlier
Some UI is displayed (boot/optimizing) before the configuration has been completely set. This noteably happens for watches and TVs because UIModeManagerService hasn't started yet. UIModeManagerService is started earlier, and its dependency TwilightService is loaded during the "all system services ready" boot phase. b/18388692 Change-Id: Iabdf8ac3eb04ebcb44779d752e19042769cc65c6
Diffstat (limited to 'services')
-rw-r--r--services/core/java/com/android/server/UiModeManagerService.java27
-rw-r--r--services/java/com/android/server/SystemServer.java6
2 files changed, 24 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index d1b4569..282f6a9 100644
--- a/services/core/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -156,7 +156,7 @@ final class UiModeManagerService extends SystemService {
@Override
public void onStart() {
final Context context = getContext();
- mTwilightManager = getLocalService(TwilightManager.class);
+
final PowerManager powerManager =
(PowerManager) context.getSystemService(Context.POWER_SERVICE);
mWakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, TAG);
@@ -183,7 +183,11 @@ final class UiModeManagerService extends SystemService {
mNightMode = Settings.Secure.getInt(context.getContentResolver(),
Settings.Secure.UI_NIGHT_MODE, UiModeManager.MODE_NIGHT_AUTO);
- mTwilightManager.registerListener(mTwilightListener, mHandler);
+ // Update the initial, static configurations.
+ synchronized (this) {
+ updateConfigurationLocked();
+ sendConfigurationLocked();
+ }
publishBinderService(Context.UI_MODE_SERVICE, mService);
}
@@ -292,8 +296,11 @@ final class UiModeManagerService extends SystemService {
pw.print(" mSetUiMode=0x"); pw.println(Integer.toHexString(mSetUiMode));
pw.print(" mHoldingConfiguration="); pw.print(mHoldingConfiguration);
pw.print(" mSystemReady="); pw.println(mSystemReady);
- pw.print(" mTwilightService.getCurrentState()=");
- pw.println(mTwilightManager.getCurrentState());
+ if (mTwilightManager != null) {
+ // We may not have a TwilightManager.
+ pw.print(" mTwilightService.getCurrentState()=");
+ pw.println(mTwilightManager.getCurrentState());
+ }
}
}
@@ -301,6 +308,10 @@ final class UiModeManagerService extends SystemService {
public void onBootPhase(int phase) {
if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
synchronized (mLock) {
+ mTwilightManager = getLocalService(TwilightManager.class);
+ if (mTwilightManager != null) {
+ mTwilightManager.registerListener(mTwilightListener, mHandler);
+ }
mSystemReady = true;
mCarModeEnabled = mDockState == Intent.EXTRA_DOCK_STATE_CAR;
updateComputedNightModeLocked();
@@ -626,9 +637,11 @@ final class UiModeManagerService extends SystemService {
}
private void updateComputedNightModeLocked() {
- TwilightState state = mTwilightManager.getCurrentState();
- if (state != null) {
- mComputedNightMode = state.isNight();
+ if (mTwilightManager != null) {
+ TwilightState state = mTwilightManager.getCurrentState();
+ if (state != null) {
+ mComputedNightMode = state.isNight();
+ }
}
}
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 334cdf6..98e7419 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -569,6 +569,10 @@ public final class SystemServer {
}
}
+ // We start this here so that we update our configuration to set watch or television
+ // as appropriate.
+ mSystemServiceManager.startService(UiModeManagerService.class);
+
try {
mPackageManagerService.performBootDexOpt();
} catch (Throwable e) {
@@ -834,8 +838,6 @@ public final class SystemServer {
mSystemServiceManager.startService(TwilightService.class);
- mSystemServiceManager.startService(UiModeManagerService.class);
-
mSystemServiceManager.startService(JobSchedulerService.class);
if (!disableNonCoreServices) {