Merge "Power manager always needs to allow wake locks for services, receivers"

This commit is contained in:
Dianne Hackborn
2016-11-02 19:46:29 +00:00
committed by Android (Google) Code Review

View File

@@ -2631,9 +2631,18 @@ public final class PowerManagerService extends SystemService
state = new UidState(uid);
mUidState.put(uid, state);
}
final boolean oldShouldAllow = state.mProcState
<= ActivityManager.PROCESS_STATE_RECEIVER;
state.mProcState = procState;
if (mDeviceIdleMode && state.mNumWakeLocks > 0) {
handleUidStateChangeLocked();
if (state.mNumWakeLocks > 0) {
if (mDeviceIdleMode) {
handleUidStateChangeLocked();
} else if (!state.mActive && oldShouldAllow !=
(procState <= ActivityManager.PROCESS_STATE_RECEIVER)) {
// If this uid is not active, but the process state has changed such
// that we may still want to allow it to hold a wake lock, then take care of it.
handleUidStateChangeLocked();
}
}
}
}
@@ -2721,7 +2730,8 @@ public final class PowerManagerService extends SystemService
disabled = true;
}
} else {
disabled = !wakeLock.mUidState.mActive;
disabled = !wakeLock.mUidState.mActive &&
wakeLock.mUidState.mProcState > ActivityManager.PROCESS_STATE_RECEIVER;
}
}
if (wakeLock.mDisabled != disabled) {