Merge "Fix issue #17495264: Battery history graph is bad" into lmp-dev

This commit is contained in:
Dianne Hackborn
2014-09-15 20:51:46 +00:00
committed by Android (Google) Code Review

View File

@@ -565,10 +565,17 @@ public class BatteryHistoryChart extends View {
} }
if (rec.cmd == HistoryItem.CMD_CURRENT_TIME if (rec.cmd == HistoryItem.CMD_CURRENT_TIME
|| rec.cmd == HistoryItem.CMD_RESET) { || rec.cmd == HistoryItem.CMD_RESET) {
// If there is a ridiculously large jump in time, then we won't be
// able to create a good chart with that data, so just ignore the
// times we got before and pretend like our data extends back from
// the time we have now.
if (rec.currentTime > (lastWallTime+(365*24*60*60*1000))) {
mStartWallTime = 0;
}
lastWallTime = rec.currentTime; lastWallTime = rec.currentTime;
lastRealtime = rec.time; lastRealtime = rec.time;
if (mStartWallTime == 0) { if (mStartWallTime == 0) {
mStartWallTime = lastWallTime; mStartWallTime = lastWallTime - (lastRealtime-mHistStart);
} }
} }
if (rec.isDeltaData()) { if (rec.isDeltaData()) {
@@ -774,7 +781,7 @@ public class BatteryHistoryChart extends View {
final long walltimeStart = mStartWallTime; final long walltimeStart = mStartWallTime;
final long walltimeChange = mEndWallTime > walltimeStart final long walltimeChange = mEndWallTime > walltimeStart
? (mEndWallTime-walltimeStart) : 1; ? (mEndWallTime-walltimeStart) : 1;
long curWalltime = 0; long curWalltime = mStartWallTime;
long lastRealtime = 0; long lastRealtime = 0;
final int batLow = mBatLow; final int batLow = mBatLow;
@@ -791,17 +798,12 @@ public class BatteryHistoryChart extends View {
boolean lastWifiRunning = false, lastWifiSupplRunning = false, lastCpuRunning = false; boolean lastWifiRunning = false, lastWifiSupplRunning = false, lastCpuRunning = false;
int lastWifiSupplState = BatteryStats.WIFI_SUPPL_STATE_INVALID; int lastWifiSupplState = BatteryStats.WIFI_SUPPL_STATE_INVALID;
final int N = mNumHist; final int N = mNumHist;
if (mStats.startIteratingHistoryLocked()) { if (mEndDataWallTime > mStartWallTime && mStats.startIteratingHistoryLocked()) {
final HistoryItem rec = new HistoryItem(); final HistoryItem rec = new HistoryItem();
while (mStats.getNextHistoryLocked(rec) && i < N) { while (mStats.getNextHistoryLocked(rec) && i < N) {
if (rec.cmd == HistoryItem.CMD_CURRENT_TIME || rec.cmd == HistoryItem.CMD_RESET) { if (rec.isDeltaData()) {
curWalltime = rec.currentTime;
lastRealtime = rec.time;
} else if (curWalltime != 0) {
curWalltime += rec.time-lastRealtime; curWalltime += rec.time-lastRealtime;
lastRealtime = rec.time; lastRealtime = rec.time;
}
if (curWalltime != 0 && rec.isDeltaData()) {
x = mLevelLeft + (int)(((curWalltime-walltimeStart)*levelWidth)/walltimeChange); x = mLevelLeft + (int)(((curWalltime-walltimeStart)*levelWidth)/walltimeChange);
if (x < 0) { if (x < 0) {
x = 0; x = 0;
@@ -950,21 +952,36 @@ public class BatteryHistoryChart extends View {
} }
} }
} else if (rec.cmd != HistoryItem.CMD_OVERFLOW } else {
&& rec.cmd != HistoryItem.CMD_CURRENT_TIME) { long lastWalltime = curWalltime;
if (curLevelPath != null) { if (rec.cmd == HistoryItem.CMD_CURRENT_TIME
finishPaths(x+1, h, levelh, startX, lastY, curLevelPath, lastX, || rec.cmd == HistoryItem.CMD_RESET) {
lastCharging, lastScreenOn, lastGpsOn, lastWifiRunning, if (rec.currentTime >= mStartWallTime) {
lastCpuRunning, lastLinePath); curWalltime = rec.currentTime;
lastX = lastY = -1; } else {
curLevelPath = null; curWalltime = mStartWallTime + (rec.time-mHistStart);
lastLinePath = null; }
lastCharging = lastScreenOn = lastGpsOn = lastCpuRunning = false; lastRealtime = rec.time;
}
if (rec.cmd != HistoryItem.CMD_OVERFLOW
&& (rec.cmd != HistoryItem.CMD_CURRENT_TIME
|| Math.abs(lastWalltime-curWalltime) > (60*60*1000))) {
if (curLevelPath != null) {
finishPaths(x+1, h, levelh, startX, lastY, curLevelPath, lastX,
lastCharging, lastScreenOn, lastGpsOn, lastWifiRunning,
lastCpuRunning, lastLinePath);
lastX = lastY = -1;
curLevelPath = null;
lastLinePath = null;
lastCharging = lastScreenOn = lastGpsOn = lastCpuRunning = false;
}
} }
} }
i++; i++;
} }
mStats.finishIteratingHistoryLocked();
} }
if (lastY < 0 || lastX < 0) { if (lastY < 0 || lastX < 0) {