diff options
author | Irfan Sheriff <isheriff@google.com> | 2012-09-16 14:55:26 -0700 |
---|---|---|
committer | Irfan Sheriff <isheriff@google.com> | 2012-09-16 17:04:48 -0700 |
commit | 1c045ec2b79c33eb29a24bff11567831ea90398b (patch) | |
tree | 4829f4b613d2e4cd7867f61933d7d3145dab3116 /wifi | |
parent | df5bdd721bdfd1a8f370dd3a18d1b0e655f71cd5 (diff) | |
download | frameworks_base-1c045ec2b79c33eb29a24bff11567831ea90398b.zip frameworks_base-1c045ec2b79c33eb29a24bff11567831ea90398b.tar.gz frameworks_base-1c045ec2b79c33eb29a24bff11567831ea90398b.tar.bz2 |
Fix suspend settings at boot
Bug: 7175460
Change-Id: Ibf5e063603866289b3dbae278bc384b833e4a75e
Diffstat (limited to 'wifi')
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateMachine.java | 58 |
1 files changed, 37 insertions, 21 deletions
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index c6bb069..b3260b1 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -138,6 +138,10 @@ public class WifiStateMachine extends StateMachine { private boolean mScanResultIsPending = false; /* Tracks if the current scan settings are active */ private boolean mSetScanActive = false; + /* Tracks if state machine has received any screen state change broadcast yet. + * We can miss one of these at boot. + */ + private AtomicBoolean mScreenBroadcastReceived = new AtomicBoolean(false); private boolean mBluetoothConnectionActive = false; @@ -635,28 +639,9 @@ public class WifiStateMachine extends StateMachine { String action = intent.getAction(); if (action.equals(Intent.ACTION_SCREEN_ON)) { - if (DBG) log("ACTION_SCREEN_ON"); - enableRssiPolling(true); - if (mBackgroundScanSupported) { - enableBackgroundScanCommand(false); - } - enableAllNetworks(); - if (mUserWantsSuspendOpt.get()) { - if (DBG) log("Clear suspend optimizations"); - sendMessage(obtainMessage(CMD_SET_SUSPEND_OPT_ENABLED, 0, 0)); - } + handleScreenStateChanged(true); } else if (action.equals(Intent.ACTION_SCREEN_OFF)) { - if (DBG) log("ACTION_SCREEN_OFF"); - enableRssiPolling(false); - if (mBackgroundScanSupported) { - enableBackgroundScanCommand(true); - } - if (mUserWantsSuspendOpt.get()) { - if (DBG) log("Enable suspend optimizations"); - //Allow 2s for suspend optimizations to be set - mSuspendWakeLock.acquire(2000); - sendMessage(obtainMessage(CMD_SET_SUSPEND_OPT_ENABLED, 1, 0)); - } + handleScreenStateChanged(false); } } }; @@ -1221,6 +1206,26 @@ public class WifiStateMachine extends StateMachine { * Internal private functions ********************************************************/ + private void handleScreenStateChanged(boolean screenOn) { + if (DBG) log("handleScreenStateChanged: " + screenOn); + enableRssiPolling(screenOn); + if (mBackgroundScanSupported) { + enableBackgroundScanCommand(screenOn == false); + } + + if (screenOn) enableAllNetworks(); + if (mUserWantsSuspendOpt.get()) { + if (screenOn) { + sendMessage(obtainMessage(CMD_SET_SUSPEND_OPT_ENABLED, 0, 0)); + } else { + //Allow 2s for suspend optimizations to be set + mSuspendWakeLock.acquire(2000); + sendMessage(obtainMessage(CMD_SET_SUSPEND_OPT_ENABLED, 1, 0)); + } + } + mScreenBroadcastReceived.set(true); + } + private void checkAndSetConnectivityInstance() { if (mCm == null) { mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); @@ -2721,6 +2726,17 @@ public class WifiStateMachine extends StateMachine { transitionTo(mDisconnectedState); } + // We may have missed screen update at boot + if (mScreenBroadcastReceived.get() == false) { + PowerManager powerManager = (PowerManager)mContext.getSystemService( + Context.POWER_SERVICE); + handleScreenStateChanged(powerManager.isScreenOn()); + } else { + // Set the right suspend mode settings + mWifiNative.setSuspendOptimizations(mSuspendOptNeedsDisabled == 0 + && mUserWantsSuspendOpt.get()); + } + if (mP2pSupported) mWifiP2pChannel.sendMessage(WifiStateMachine.CMD_ENABLE_P2P); } @Override |