OmniGears: more cleanup for wakelock view
also add check for latest unplug to make sure
clean ref data is created and no wrong data can be shown
Change-Id: I8c31fa4b6cf6052387eb67ef0e09c49ded13f8b7
diff --git a/src/org/omnirom/omnigears/system/Wakelocks.java b/src/org/omnirom/omnigears/system/Wakelocks.java
index 17715a8..7035b04 100644
--- a/src/org/omnirom/omnigears/system/Wakelocks.java
+++ b/src/org/omnirom/omnigears/system/Wakelocks.java
@@ -88,8 +88,8 @@
public class Wakelocks extends SettingsPreferenceFragment {
private static final String TAG = "Wakelocks";
private static String sRefFilename = "wakelockdata.ref";
- private static final int MAX_KERNEL_LIST_ITEMS = 10;
- private static final int MAX_USER_LIST_ITEMS = 7;
+ private static final int MAX_KERNEL_LIST_ITEMS = 15;
+ private static final int MAX_USER_LIST_ITEMS = 15;
private LinearLayout mStatesView;
private TextView mTotalStateTime;
private TextView mKernelWakelockWarning;
@@ -99,8 +99,6 @@
private BatteryStatsHelper mStatsHelper;
private long rawUptime;
private long rawRealtime;
- private long sleepTime;
- private int mBatteryLevel;
private LinearLayout mProgress;
private ArrayList<WakelockStats> mKernelWakelocks = new ArrayList<WakelockStats>();
private ArrayList<WakelockStats> mUserWakelocks = new ArrayList<WakelockStats>();
@@ -115,9 +113,6 @@
private boolean mShowAll;
private StringBuffer mShareData;
private PopupMenu mPopup;
- private long mUnplugBatteryUptime;
- private long mUnplugBatteryRealtime;
- private int mUnplugBatteryLevel;
private boolean mIsOnBattery;
private List<WakelockAppStats> mAppWakelockList = new ArrayList<WakelockAppStats>();
private Intent mShareIntent;
@@ -428,8 +423,11 @@
long now = System.currentTimeMillis();
long bootTime = now - rawRealtime;
long refDumpTime = getRefDataDumpTime();
- if (refDumpTime == -1 || bootTime > refDumpTime) {
- // ref data was dumped before a reboot or no ref data at all
+ long timeSinceUnplugged = mBatteryStats.computeBatteryRealtime(
+ rawRealtime * 1000, BatteryStats.STATS_SINCE_UNPLUGGED) / 1000;
+ long unplugTime = now - timeSinceUnplugged;
+ if (refDumpTime == -1 || bootTime > refDumpTime || unplugTime > refDumpTime) {
+ // ref data was dumped before a reboot before last unplug or no ref data at all
// makes no sense to use require user to create new refpint
mKernelWakelockWarning.setText(getResources().getString(
R.string.no_stat_because_reset_wakelock));
@@ -449,7 +447,7 @@
mKernelWakelockWarning.setVisibility(View.VISIBLE);
}
- sleepTime = Math.max(totalTimeInSecs - totalUptimeInSecs, 0);
+ long sleepTime = Math.max(totalTimeInSecs - totalUptimeInSecs, 0);
if (mListType == 0 && showStats) {
generateTimeRow(getResources().getString(R.string.awake_time),
@@ -1116,9 +1114,9 @@
if (partialWakeTimer != null) {
long totalTimeMillis = computeWakeLock(
partialWakeTimer, rawRealtime * 1000,
- BatteryStats.STATS_SINCE_CHARGED);
+ BatteryStats.STATS_CURRENT);
int count = partialWakeTimer
- .getCountLocked(BatteryStats.STATS_SINCE_CHARGED);
+ .getCountLocked(BatteryStats.STATS_CURRENT);
if (totalTimeMillis > 0 && count > 0) {
WakelockStats foundEntry = indexList.get(ent
.getKey());
@@ -1151,9 +1149,9 @@
BatteryStats.Timer wl = ent.getValue();
long totalTimeMillis = microToMillis(wl.getTotalTimeLocked(
- rawRealtime * 1000, BatteryStats.STATS_SINCE_CHARGED));
+ rawRealtime * 1000, BatteryStats.STATS_CURRENT));
int count = wl
- .getCountLocked(BatteryStats.STATS_SINCE_CHARGED);
+ .getCountLocked(BatteryStats.STATS_CURRENT);
if (totalTimeMillis > 0 && count > 0) {
WakelockStats entry = new WakelockStats(0, ent.getKey(),
@@ -1177,13 +1175,6 @@
rawUptime = SystemClock.uptimeMillis();
rawRealtime = SystemClock.elapsedRealtime();
- mBatteryLevel = mBatteryStats.getDischargeCurrentLevel();
- mUnplugBatteryLevel = mBatteryStats.getDischargeStartLevel();
-
- mUnplugBatteryUptime = mBatteryStats.computeBatteryUptime(
- rawUptime * 1000, BatteryStats.STATS_SINCE_CHARGED);
- mUnplugBatteryRealtime = mBatteryStats.computeBatteryRealtime(
- rawRealtime * 1000, BatteryStats.STATS_SINCE_CHARGED);
mIsOnBattery = mBatteryStats.getIsOnBattery();
mShareData.append("\n================\n");