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

Commit aa0721e5 authored by Amit Mahajan's avatar Amit Mahajan
Browse files

Ignore messages in SST if phone type does not match to fix crash

Other cleanup:
1. Removed mIsTheCurrentActivePhone
2. Call unregisterForAllDataDisconnected() and 
unregisterForImsNetworkStateChanged() on SST dispose()

Bug: 25844814
Change-Id: I408de35b8875cec1bec9f0690053b90f3076d88d
parent fd34e37f
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -1349,11 +1349,6 @@ public class GsmCdmaCallTracker extends CallTracker {
    handleMessage (Message msg) {
        AsyncResult ar;

        if (!mPhone.mIsTheCurrentActivePhone) {
            Rlog.e(LOG_TAG, "Received message " + msg +
                    "[" + msg.what + "] while being destroyed. Ignoring.");
            return;
        }
        switch (msg.what) {
            case EVENT_POLL_CALLS_RESULT:
                Rlog.d(LOG_TAG, "Event EVENT_POLL_CALLS_RESULT Received");
+0 −4
Original line number Diff line number Diff line
@@ -2071,10 +2071,6 @@ public class GsmCdmaPhone extends PhoneBase {
                return;
        }

        if (!mIsTheCurrentActivePhone) {
            loge("Received message " + msg + "[" + msg.what + "] while being destroyed. Ignoring.");
            return;
        }
        switch (msg.what) {
            case EVENT_RADIO_AVAILABLE: {
                mCi.getBasebandVersion(obtainMessage(EVENT_GET_BASEBAND_VERSION_DONE));
+2 −12
Original line number Diff line number Diff line
@@ -227,7 +227,6 @@ public abstract class PhoneBase extends Handler implements Phone {
    boolean mDoesRilSendMultipleCallRing;
    int mCallRingContinueToken;
    int mCallRingDelay;
    public boolean mIsTheCurrentActivePhone = true;
    boolean mIsVoiceCapable = true;

    // Variable to cache the video capability. When RAT changes, we lose this info and are unable
@@ -528,7 +527,6 @@ public abstract class PhoneBase extends Handler implements Phone {
            mCi.unSetOnCallRing(this);
            // Must cleanup all connectionS and needs to use sendMessage!
            mDcTracker.cleanUpAllConnections(null);
            mIsTheCurrentActivePhone = false;
            // Dispose the SMS usage and storage monitors
            mSmsStorageMonitor.dispose();
            mSmsUsageMonitor.dispose();
@@ -589,11 +587,6 @@ public abstract class PhoneBase extends Handler implements Phone {
                return;
        }

        if (!mIsTheCurrentActivePhone) {
            Rlog.e(LOG_TAG, "Received message " + msg +
                    "[" + msg.what + "] while being destroyed. Ignoring.");
            return;
        }
        switch(msg.what) {
            case EVENT_CALL_RING:
                Rlog.d(LOG_TAG, "Event EVENT_CALL_RING Received state=" + getState());
@@ -2600,11 +2593,9 @@ public abstract class PhoneBase extends Handler implements Phone {
     * LCE service state may get destroyed on the modem when radio becomes unavailable.
     */
    public void startLceAfterRadioIsAvailable() {
        if (mIsTheCurrentActivePhone) {
        mCi.startLceService(DEFAULT_REPORT_INTERVAL_MS, LCE_PULL_MODE,
            obtainMessage(EVENT_CONFIG_LCE));
    }
    }

    @Override
    public Locale getLocaleFromSimAndCarrierPrefs() {
@@ -2667,7 +2658,6 @@ public abstract class PhoneBase extends Handler implements Phone {
        pw.println(" mDoesRilSendMultipleCallRing=" + mDoesRilSendMultipleCallRing);
        pw.println(" mCallRingContinueToken=" + mCallRingContinueToken);
        pw.println(" mCallRingDelay=" + mCallRingDelay);
        pw.println(" mIsTheCurrentActivePhone=" + mIsTheCurrentActivePhone);
        pw.println(" mIsVoiceCapable=" + mIsVoiceCapable);
        pw.println(" mIccRecords=" + mIccRecords.get());
        pw.println(" mUiccApplication=" + mUiccApplication.get());
+1 −0
Original line number Diff line number Diff line
@@ -349,6 +349,7 @@ public abstract class ServiceStateTracker extends Handler {
        mCi.unregisterForCellInfoList(this);
        mSubscriptionManager
            .removeOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
        mCi.unregisterForImsNetworkStateChanged(this);
    }

    public boolean getDesiredPowerState() {
+5 −3
Original line number Diff line number Diff line
@@ -84,16 +84,18 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
    @Override
    public void dispose() {
        mPhone.unregisterForSimRecordsLoaded(this);

        int dds = SubscriptionManager.getDefaultDataSubId();
        ProxyController.getInstance().unregisterForAllDataDisconnected(dds, this);

        super.dispose();
    }

    @Override
    public void handleMessage(Message msg) {
        AsyncResult ar;
        int[] ints;
        String[] strings;

        if (!mPhone.mIsTheCurrentActivePhone) {
        if (mPhone.getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA) {
            loge("Received message " + msg + "[" + msg.what + "]" +
                    " while being destroyed. Ignoring.");
            return;
Loading