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

Commit ffdcb1c0 authored by Jack He's avatar Jack He Committed by Gerrit Code Review
Browse files

Merge "HeadsetPhoneState: Synchronize startListenForPhoneState to prevent race condition"

parents b5bd2676 68619eeb
Loading
Loading
Loading
Loading
+33 −28
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ public class HeadsetPhoneState {
    private PhoneStateListener mPhoneStateListener;
    private final OnSubscriptionsChangedListener mOnSubscriptionsChangedListener;
    private SignalStrengthUpdateRequest mSignalStrengthUpdateRequest;
    private final Object mPhoneStateListenerLock = new Object();

    HeadsetPhoneState(HeadsetService headsetService) {
        Objects.requireNonNull(headsetService, "headsetService is null");
@@ -145,6 +146,7 @@ public class HeadsetPhoneState {
    }

    private void startListenForPhoneState() {
        synchronized (mPhoneStateListenerLock) {
            if (mPhoneStateListener != null) {
                Log.w(TAG, "startListenForPhoneState, already listening");
                return;
@@ -167,8 +169,10 @@ public class HeadsetPhoneState {
                mTelephonyManager.setSignalStrengthUpdateRequest(mSignalStrengthUpdateRequest);
            }
        }
    }

    private void stopListenForPhoneState() {
        synchronized (mPhoneStateListenerLock) {
            if (mPhoneStateListener == null) {
                Log.i(TAG, "stopListenForPhoneState(), no listener indicates nothing is listening");
                return;
@@ -179,6 +183,7 @@ public class HeadsetPhoneState {
            mPhoneStateListener = null;
            mTelephonyManager.clearSignalStrengthUpdateRequest(mSignalStrengthUpdateRequest);
        }
    }

    int getCindService() {
        return mCindService;