diff options
author | Adam Lesinski <adamlesinski@google.com> | 2015-03-19 14:37:11 -0700 |
---|---|---|
committer | Anthony Hugh <ahugh@google.com> | 2015-03-23 12:02:52 -0700 |
commit | 11cc1f166dfc18d6d2338b93f7526a0911c7bb67 (patch) | |
tree | 1db33f1b7f0b436d3e7279105dcf0ff0ad0e7c90 /services | |
parent | 104a29b6b5fe6e454787053ca72950dbbc4d424b (diff) | |
download | frameworks_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.java | 27 | ||||
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 6 |
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) { |