summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shumao Hou <shumao1129@gmail.com> 2022-06-15 15:47:04 -0700
committer Dmitri Plotnikov <dplotnikov@google.com> 2022-06-21 20:57:40 +0000
commite57b8c1749646ed659986422f7c98f7994cc508b (patch)
tree53b9288cc1d2f15051f127b03f130635bd45f61c
parentb4d605f778866c1bb21371ab531845c22fb6a06d (diff)
BatteryStatsImpl: Add parcel methods for DisplayBatteryStats.
DisplayBatteryStats didn't have parcel methods and the estimated multidisplay screen power was always initialized from 0. The estimated screen power of the app will become inaccurate after rebooting. Bug: 235321975 Test: manual test. 1. Unplug the device. 2. Use an app for a while and keep screen on. 3. Capture the first bug report. 4. Reboot the device. 5. Capture the second bug report. The estimated screen power of the app shouldn't become lower after rebooting the device. Author: Shumao Hou <shumao1129@gmail.com> Change-Id: If74e285102a7350c17c2fc40a205b2031e82f5f4 (cherry picked from commit 79c3779bb1de72610d36e0ce8daf715e04091d1b)
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java35
1 files changed, 33 insertions, 2 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 98d4c5976adc..ac57d6934f18 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -166,8 +166,8 @@ public class BatteryStatsImpl extends BatteryStats {
// In-memory Parcel magic number, used to detect attempts to unmarshall bad data
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
- // Current on-disk Parcel version
- static final int VERSION = 208;
+ // Current on-disk Parcel version. Must be updated when the format of the parcelable changes
+ public static final int VERSION = 209;
// The maximum number of names wakelocks we will keep track of
// per uid; once the limit is reached, we batch the remaining wakelocks
@@ -884,6 +884,28 @@ public class BatteryStatsImpl extends BatteryStats {
screenBrightnessTimers[i].reset(false, elapsedRealtimeUs);
}
}
+
+ /**
+ * Write data to summary parcel
+ */
+ public void writeSummaryToParcel(Parcel out, long elapsedRealtimeUs) {
+ screenOnTimer.writeSummaryFromParcelLocked(out, elapsedRealtimeUs);
+ screenDozeTimer.writeSummaryFromParcelLocked(out, elapsedRealtimeUs);
+ for (int i = 0; i < NUM_SCREEN_BRIGHTNESS_BINS; i++) {
+ screenBrightnessTimers[i].writeSummaryFromParcelLocked(out, elapsedRealtimeUs);
+ }
+ }
+
+ /**
+ * Read data from summary parcel
+ */
+ public void readSummaryFromParcel(Parcel in) {
+ screenOnTimer.readSummaryFromParcelLocked(in);
+ screenDozeTimer.readSummaryFromParcelLocked(in);
+ for (int i = 0; i < NUM_SCREEN_BRIGHTNESS_BINS; i++) {
+ screenBrightnessTimers[i].readSummaryFromParcelLocked(in);
+ }
+ }
}
DisplayBatteryStats[] mPerDisplayBatteryStats;
@@ -17275,6 +17297,10 @@ public class BatteryStatsImpl extends BatteryStats {
for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) {
mScreenBrightnessTimer[i].readSummaryFromParcelLocked(in);
}
+ final int numDisplays = in.readInt();
+ for (int i = 0; i < numDisplays; i++) {
+ mPerDisplayBatteryStats[i].readSummaryFromParcel(in);
+ }
mInteractive = false;
mInteractiveTimer.readSummaryFromParcelLocked(in);
mPhoneOn = false;
@@ -17784,6 +17810,11 @@ public class BatteryStatsImpl extends BatteryStats {
for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) {
mScreenBrightnessTimer[i].writeSummaryFromParcelLocked(out, nowRealtime);
}
+ final int numDisplays = mPerDisplayBatteryStats.length;
+ out.writeInt(numDisplays);
+ for (int i = 0; i < numDisplays; i++) {
+ mPerDisplayBatteryStats[i].writeSummaryToParcel(out, nowRealtime);
+ }
mInteractiveTimer.writeSummaryFromParcelLocked(out, nowRealtime);
mPowerSaveModeEnabledTimer.writeSummaryFromParcelLocked(out, nowRealtime);
out.writeLong(mLongestLightIdleTimeMs);