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

Commit e107b6a0 authored by Amit Mahajan's avatar Amit Mahajan Committed by Gerrit Code Review
Browse files

Merge "Dont reuse DcController object after calling dispose() on it."

parents a44a1861 56687818
Loading
Loading
Loading
Loading
+14 −6
Original line number Original line Diff line number Diff line
@@ -207,6 +207,7 @@ public class DcTracker extends Handler {
            "extra_handover_failure_fallback";
            "extra_handover_failure_fallback";


    private final String mLogTag;
    private final String mLogTag;
    private final String mLogTagSuffix;


    public AtomicBoolean isCleanupRequired = new AtomicBoolean(false);
    public AtomicBoolean isCleanupRequired = new AtomicBoolean(false);


@@ -671,13 +672,12 @@ public class DcTracker extends Handler {
                .createForSubscriptionId(phone.getSubId());
                .createForSubscriptionId(phone.getSubId());
        // The 'C' in tag indicates cellular, and 'I' indicates IWLAN. This is to distinguish
        // The 'C' in tag indicates cellular, and 'I' indicates IWLAN. This is to distinguish
        // between two DcTrackers, one for each.
        // between two DcTrackers, one for each.
        String tagSuffix = "-" + ((transportType == AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
        mLogTagSuffix = "-" + ((transportType == AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
                ? "C" : "I");
                ? "C" : "I") + "-" + mPhone.getPhoneId();
        tagSuffix += "-" + mPhone.getPhoneId();
        mLogTag = "DCT" + mLogTagSuffix;
        mLogTag = "DCT" + tagSuffix;


        mTransportType = transportType;
        mTransportType = transportType;
        mDataServiceManager = new DataServiceManager(phone, transportType, tagSuffix);
        mDataServiceManager = new DataServiceManager(phone, transportType, mLogTagSuffix);


        mResolver = mPhone.getContext().getContentResolver();
        mResolver = mPhone.getContext().getContentResolver();
        mAlarmManager =
        mAlarmManager =
@@ -713,7 +713,7 @@ public class DcTracker extends Handler {
        mHandlerThread = new HandlerThread("DcHandlerThread");
        mHandlerThread = new HandlerThread("DcHandlerThread");
        mHandlerThread.start();
        mHandlerThread.start();
        Handler dcHandler = new Handler(mHandlerThread.getLooper());
        Handler dcHandler = new Handler(mHandlerThread.getLooper());
        mDcc = DcController.makeDcc(mPhone, this, mDataServiceManager, dcHandler, tagSuffix);
        mDcc = DcController.makeDcc(mPhone, this, mDataServiceManager, dcHandler, mLogTagSuffix);
        mDcTesterFailBringUpAll = new DcTesterFailBringUpAll(mPhone, dcHandler);
        mDcTesterFailBringUpAll = new DcTesterFailBringUpAll(mPhone, dcHandler);


        mDataConnectionTracker = this;
        mDataConnectionTracker = this;
@@ -736,6 +736,7 @@ public class DcTracker extends Handler {
    @VisibleForTesting
    @VisibleForTesting
    public DcTracker() {
    public DcTracker() {
        mLogTag = "DCT";
        mLogTag = "DCT";
        mLogTagSuffix = null;
        mTelephonyManager = null;
        mTelephonyManager = null;
        mAlarmManager = null;
        mAlarmManager = null;
        mPhone = null;
        mPhone = null;
@@ -5032,9 +5033,16 @@ public class DcTracker extends Handler {


    private void onDataServiceBindingChanged(boolean bound) {
    private void onDataServiceBindingChanged(boolean bound) {
        if (bound) {
        if (bound) {
            if (mDcc == null) {
                mDcc = DcController.makeDcc(mPhone, this, mDataServiceManager,
                        new Handler(mHandlerThread.getLooper()), mLogTagSuffix);
            }
            mDcc.start();
            mDcc.start();
        } else {
        } else {
            mDcc.dispose();
            mDcc.dispose();
            // dispose sets the associated Handler object (StateMachine#mSmHandler) to null, so mDcc
            // needs to be created again (simply calling start() on it after dispose will not work)
            mDcc = null;
        }
        }
        mDataServiceBound = bound;
        mDataServiceBound = bound;
    }
    }