Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a90964e1 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Fix total wakelock duration calculation

Bug: 380411898
Test: atest PowerStatsTests; atest PowerStatsTestsRavenwood
Flag: EXEMPT bugfix
Change-Id: I0fa70202f7cae5484b8f97da1ee15ac8597235f6
parent defccd35
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -409,11 +409,10 @@ public class BatteryStatsImpl extends BatteryStats {
                @Override
                public long getWakelockDurationMillis() {
                    synchronized (BatteryStatsImpl.this) {
                        long rawRealtimeUs = mClock.uptimeMillis() * 1000;
                        long batteryUptimeUs = getBatteryUptime(rawRealtimeUs);
                        long screenOnTimeUs = getScreenOnTime(rawRealtimeUs,
                        long batteryUptimeUs = getBatteryUptime(mClock.uptimeMillis() * 1000);
                        long screenOnTimeUs = getScreenOnTime(mClock.elapsedRealtime() * 1000,
                                BatteryStats.STATS_SINCE_CHARGED);
                        return (batteryUptimeUs - screenOnTimeUs) / 1000;
                        return Math.max(0, (batteryUptimeUs - screenOnTimeUs) / 1000);
                    }
                }
@@ -437,8 +436,9 @@ public class BatteryStatsImpl extends BatteryStats {
                                }
                            }
                            if (wakeLockTimeUs != 0) {
                                callback.onUidWakelockDuration(u.getUid(), wakeLockTimeUs / 1000);
                            long wakelockTimeMs = wakeLockTimeUs / 1000;
                            if (wakelockTimeMs != 0) {
                                callback.onUidWakelockDuration(u.getUid(), wakelockTimeMs);
                            }
                        }
                    }
+9 −7
Original line number Diff line number Diff line
@@ -108,14 +108,16 @@ class WakelockPowerStatsCollector extends PowerStatsCollector {

        mWakelockDurationRetriever.retrieveUidWakelockDuration((uid, durationMs) -> {
            if (!mFirstCollection) {
                long diffMs = Math.max(0, durationMs - mLastUidWakelockDurations.get(uid));
                if (diffMs != 0) {
                    long[] uidStats = mPowerStats.uidStats.get(uid);
                    if (uidStats == null) {
                        uidStats = new long[mDescriptor.uidStatsArrayLength];
                        mPowerStats.uidStats.put(uid, uidStats);
                    }

                mStatsLayout.setUidUsageDuration(uidStats,
                        Math.max(0, durationMs - mLastUidWakelockDurations.get(uid)));
                    mStatsLayout.setUidUsageDuration(uidStats, diffMs);
                }
            }
            mLastUidWakelockDurations.put(uid, durationMs);
        });