forked from andixlm/android_build-tools
-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
0 additions
and
123 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,126 +1,3 @@ | ||
From 7b1d6270869b4040c0e702d491412f6f35967911 Mon Sep 17 00:00:00 2001 | ||
From: Pawit Pornkitprasan <[email protected]> | ||
Date: Sun, 29 Dec 2013 08:54:55 +0700 | ||
Subject: [PATCH 1/2] WifiController: fix high perf lock sometimes not | ||
respected | ||
|
||
When the device screen is turned off, the state is DeviceActive for | ||
15 minutes. In this time, high perf lock is not respected and | ||
Wi-Fi power-saving mode will be turned on because screen is off. | ||
|
||
Fix by adding a new DeviceActiveHighPerfState. | ||
|
||
Change-Id: I71074beec4d41286dea0861107d7931da205aca2 | ||
JIRA: CYAN-2860 | ||
--- | ||
.../com/android/server/wifi/WifiController.java | 34 +++++++++++++++++++--- | ||
1 file changed, 30 insertions(+), 4 deletions(-) | ||
|
||
diff --git a/service/java/com/android/server/wifi/WifiController.java b/service/java/com/android/server/wifi/WifiController.java | ||
index 4b2152e..c244162 100644 | ||
--- a/service/java/com/android/server/wifi/WifiController.java | ||
+++ b/service/java/com/android/server/wifi/WifiController.java | ||
@@ -123,6 +123,7 @@ class WifiController extends StateMachine { | ||
private StaDisabledWithScanState mStaDisabledWithScanState = new StaDisabledWithScanState(); | ||
private ApEnabledState mApEnabledState = new ApEnabledState(); | ||
private DeviceActiveState mDeviceActiveState = new DeviceActiveState(); | ||
+ private DeviceActiveHighPerfState mDeviceActiveHighPerfState = new DeviceActiveHighPerfState(); | ||
private DeviceInactiveState mDeviceInactiveState = new DeviceInactiveState(); | ||
private ScanOnlyLockHeldState mScanOnlyLockHeldState = new ScanOnlyLockHeldState(); | ||
private FullLockHeldState mFullLockHeldState = new FullLockHeldState(); | ||
@@ -145,6 +146,7 @@ class WifiController extends StateMachine { | ||
addState(mApStaDisabledState, mDefaultState); | ||
addState(mStaEnabledState, mDefaultState); | ||
addState(mDeviceActiveState, mStaEnabledState); | ||
+ addState(mDeviceActiveHighPerfState, mDeviceActiveState); | ||
addState(mDeviceInactiveState, mStaEnabledState); | ||
addState(mScanOnlyLockHeldState, mDeviceInactiveState); | ||
addState(mFullLockHeldState, mDeviceInactiveState); | ||
@@ -416,7 +418,7 @@ class WifiController extends StateMachine { | ||
break; | ||
} | ||
if (mDeviceIdle == false) { | ||
- transitionTo(mDeviceActiveState); | ||
+ checkLocksAndTransitionWhenDeviceActive(); | ||
} else { | ||
checkLocksAndTransitionWhenDeviceIdle(); | ||
} | ||
@@ -545,7 +547,7 @@ class WifiController extends StateMachine { | ||
break; | ||
} | ||
if (mDeviceIdle == false) { | ||
- transitionTo(mDeviceActiveState); | ||
+ checkLocksAndTransitionWhenDeviceActive(); | ||
} else { | ||
checkLocksAndTransitionWhenDeviceIdle(); | ||
} | ||
@@ -635,7 +637,7 @@ class WifiController extends StateMachine { | ||
if (msg.what == CMD_EMERGENCY_MODE_CHANGED && msg.arg1 == 0) { | ||
if (mSettingsStore.isWifiToggleEnabled()) { | ||
if (mDeviceIdle == false) { | ||
- transitionTo(mDeviceActiveState); | ||
+ checkLocksAndTransitionWhenDeviceActive(); | ||
} else { | ||
checkLocksAndTransitionWhenDeviceIdle(); | ||
} | ||
@@ -665,6 +667,9 @@ class WifiController extends StateMachine { | ||
if (msg.what == CMD_DEVICE_IDLE) { | ||
checkLocksAndTransitionWhenDeviceIdle(); | ||
// We let default state handle the rest of work | ||
+ } else if (msg.what == CMD_LOCKS_CHANGED) { | ||
+ checkLocksAndTransitionWhenDeviceActive(); | ||
+ return HANDLED; | ||
} else if (msg.what == CMD_USER_PRESENT) { | ||
// TLS networks can't connect until user unlocks keystore. KeyStore | ||
// unlocks when the user punches PIN after the reboot. So use this | ||
@@ -679,6 +684,16 @@ class WifiController extends StateMachine { | ||
} | ||
} | ||
|
||
+ /* Parent: DeviceActiveState. Device is active, and an app is holding a high perf lock. */ | ||
+ class DeviceActiveHighPerfState extends State { | ||
+ @Override | ||
+ public void enter() { | ||
+ mWifiStateMachine.setOperationalMode(WifiStateMachine.CONNECT_MODE); | ||
+ mWifiStateMachine.setDriverStart(true); | ||
+ mWifiStateMachine.setHighPerfModeEnabled(true); | ||
+ } | ||
+ } | ||
+ | ||
/* Parent: StaEnabledState */ | ||
class DeviceInactiveState extends State { | ||
@Override | ||
@@ -689,7 +704,7 @@ class WifiController extends StateMachine { | ||
updateBatteryWorkSource(); | ||
return HANDLED; | ||
case CMD_SCREEN_ON: | ||
- transitionTo(mDeviceActiveState); | ||
+ checkLocksAndTransitionWhenDeviceActive(); | ||
// More work in default state | ||
return NOT_HANDLED; | ||
default: | ||
@@ -735,6 +750,17 @@ class WifiController extends StateMachine { | ||
} | ||
} | ||
|
||
+ private void checkLocksAndTransitionWhenDeviceActive() { | ||
+ if (mLocks.hasLocks() && mLocks.getStrongestLockMode() == WIFI_MODE_FULL_HIGH_PERF) { | ||
+ // It is possible for the screen to be off while the device is | ||
+ // is active (mIdleMillis), so we need the high-perf mode | ||
+ // otherwise powersaving mode will be turned on. | ||
+ transitionTo(mDeviceActiveHighPerfState); | ||
+ } else { | ||
+ transitionTo(mDeviceActiveState); | ||
+ } | ||
+ } | ||
+ | ||
private void checkLocksAndTransitionWhenDeviceIdle() { | ||
if (mLocks.hasLocks()) { | ||
switch (mLocks.getStrongestLockMode()) { | ||
-- | ||
1.9.3 (Apple Git-50) | ||
|
||
|
||
From ee9c238c005b5a506d361dc4585a1ea29dd978c2 Mon Sep 17 00:00:00 2001 | ||
From: Pawit Pornkitprasan <[email protected]> | ||
Date: Sun, 16 Nov 2014 14:35:29 +0700 | ||
|