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

Commit 9e24e5a8 authored by Mengjun Leng's avatar Mengjun Leng Committed by Hall Liu
Browse files

Fix receating APN list after other SIM is removed

The dummy SUB ID can be returned while the SUB to slot map is
rebuilding due to race condition, so that the previous SUB is
written as dummy SUB ID even its SIM is still present.

To fix it, avoid writing the previous SUB cache while SUB is not
active, after SIM is not ready, the previous SUB cache can be reset.

Bug: 111906758
Change-Id: I08ed7706a4adc8943783c53c879cc6f9af17a0bb
parent 3e94f274
Loading
Loading
Loading
Loading
+26 −22
Original line number Diff line number Diff line
@@ -278,8 +278,10 @@ public class DcTracker extends Handler {
    };

    private SubscriptionManager mSubscriptionManager;
    private final OnSubscriptionsChangedListener mOnSubscriptionsChangedListener =
            new OnSubscriptionsChangedListener() {
    private final DctOnSubscriptionsChangedListener
            mOnSubscriptionsChangedListener = new DctOnSubscriptionsChangedListener();

    private class DctOnSubscriptionsChangedListener extends OnSubscriptionsChangedListener {
        public final AtomicInteger mPreviousSubId =
                new AtomicInteger(SubscriptionManager.INVALID_SUBSCRIPTION_ID);

@@ -295,8 +297,8 @@ public class DcTracker extends Handler {
            if (SubscriptionManager.isValidSubscriptionId(subId)) {
                registerSettingsObserver();
            }
                    if (mPreviousSubId.getAndSet(subId) != subId &&
                            SubscriptionManager.isValidSubscriptionId(subId)) {
            if (SubscriptionManager.isValidSubscriptionId(subId) &&
                    mPreviousSubId.getAndSet(subId) != subId) {
                onRecordsLoadedOrSubIdChanged();
            }
        }
@@ -2287,6 +2289,8 @@ public class DcTracker extends Handler {
        mAutoAttachOnCreationConfig = false;
        // Clear auto attach as modem is expected to do a new attach once SIM is ready
        mAutoAttachOnCreation.set(false);
        mOnSubscriptionsChangedListener.mPreviousSubId.set(
                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
    }

    public void setPolicyDataEnabled(boolean enabled) {