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

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

Address deadlock between BatteryStatsService and BatteryStatsImpl

Bug: 408540794
Test: atest PowerStatsTests
Flag: EXEMPT bug fix
Change-Id: I57699cb6aa998307b6bafee0ee2ee94d36ef47a2
parent 83255b9c
Loading
Loading
Loading
Loading
+14 −18
Original line number Diff line number Diff line
@@ -2904,17 +2904,14 @@ public final class BatteryStatsService extends IBatteryStats.Stub
            final int chargeFullUAh, final long chargeTimeToFullSeconds) {
        super.setBatteryState_enforcePermission();

        synchronized (mLock) {
        final long elapsedRealtime = SystemClock.elapsedRealtime();
        final long uptime = SystemClock.uptimeMillis();
        final long currentTime = System.currentTimeMillis();
        final boolean onBattery = BatteryStatsImpl.isOnBattery(plugType, status);
            final boolean batteryStateChanged;
            synchronized (mStats) {
                batteryStateChanged = mStats.isOnBattery() != onBattery;
            }
        mHandler.post(() -> {
            boolean batteryStateChanged;
            synchronized (mStats) {
                batteryStateChanged = mStats.isOnBattery() != onBattery;
                mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt,
                        chargeUAh, chargeFullUAh, chargeTimeToFullSeconds,
                        elapsedRealtime, uptime, currentTime);
@@ -2925,7 +2922,6 @@ public final class BatteryStatsService extends IBatteryStats.Stub
            }
        });
    }
    }

    @Override
    @EnforcePermission(BATTERY_STATS)