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

Commit 6e5eb1df authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Fix dead lock between AM and BatterySaverStateMachine

Change-Id: If641ad1a0961376de65fdb9d557e7e2e601af389
Fixes: 77308319
Test: Boot, toggle battery saver
Test: atest $ANDROID_BUILD_TOP/frameworks/base/services/tests/servicestests/src/com/android/server/power/batterysaver/BatterySaverStateMachineTest.java
parent ea3377b4
Loading
Loading
Loading
Loading
+24 −15
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.util.proto.ProtoOutputStream;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.BackgroundThread;
import com.android.server.power.BatterySaverPolicy;
import com.android.server.power.BatterySaverStateMachineProto;

@@ -124,6 +125,8 @@ public class BatterySaverStateMachine {
        if (DEBUG) {
            Slog.d(TAG, "onBootCompleted");
        }
        // This is called with the power manager lock held. Don't do any
        runOnBgThread(() -> {
            synchronized (mLock) {

                final ContentResolver cr = mContext.getContentResolver();
@@ -143,6 +146,12 @@ public class BatterySaverStateMachine {

                doAutoBatterySaverLocked();
            }
        });
    }

    @VisibleForTesting
    void runOnBgThread(Runnable r) {
        BackgroundThread.getHandler().post(r);
    }

    void refreshSettingsLocked() {
+5 −0
Original line number Diff line number Diff line
@@ -139,6 +139,11 @@ public class BatterySaverStateMachineTest {
        protected int getGlobalSetting(String key, int defValue) {
            return mDevice.getGlobalSetting(key, defValue);
        }

        @Override
        void runOnBgThread(Runnable r) {
            r.run();
        }
    }

    @Before