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

Commit a43db7f4 authored by Kazuhiro Ondo's avatar Kazuhiro Ondo Committed by Wink Saville
Browse files

Clean up calls immediately if cid become inactive in unsol data state changed

Do not perform extra data call list query. Just trust the message sent up
from RIL.

Change-Id: Ic03f5cc13ef05fe1de8fb5826fa37a68708e8e18
parent 6ed4798c
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -97,7 +97,6 @@ public abstract class DataConnectionTracker extends Handler {
    protected static final int EVENT_TRY_SETUP_DATA = 5;
    protected static final int EVENT_DATA_STATE_CHANGED = 6;
    protected static final int EVENT_POLL_PDP = 7;
    protected static final int EVENT_GET_PDP_LIST_COMPLETE = 11;
    protected static final int EVENT_RADIO_OFF_OR_NOT_AVAILABLE = 12;
    protected static final int EVENT_VOICE_CALL_STARTED = 14;
    protected static final int EVENT_VOICE_CALL_ENDED = 15;
+12 −26
Original line number Diff line number Diff line
@@ -960,7 +960,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
     * via an unsolicited response (which could have happened at any
     * previous state
     */
    private void onDataStateChanged (AsyncResult ar, boolean explicitPoll) {
    private void onDataStateChanged (AsyncResult ar) {
        ArrayList<DataCallState> dataCallStates;

        dataCallStates = (ArrayList<DataCallState>)(ar.result);
@@ -973,12 +973,11 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
        }

        for (ApnContext apnContext : mApnContexts.values()) {
            onDataStateChanged(dataCallStates, explicitPoll, apnContext);
            onDataStateChanged(dataCallStates, apnContext);
        }
    }

    private void onDataStateChanged (ArrayList<DataCallState> dataCallStates,
                                     boolean explicitPoll,
                                     ApnContext apnContext) {

        if (apnContext == null) {
@@ -1008,15 +1007,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
                return;
            } else if (!dataCallStatesHasActiveCID(dataCallStates,
                    apnContext.getDataConnection().getCid())) {
                // Here, we only consider this authoritative if we asked for the
                // PDP list. If it was an unsolicited response, we poll again
                // to make sure everyone agrees on the initial state.

                if (!explicitPoll) {
                    // We think it disconnected but aren't sure...poll from our side
                    mPhone.mCM.getPDPContextList(
                            this.obtainMessage(EVENT_GET_PDP_LIST_COMPLETE));
                } else {

                Log.i(LOG_TAG, "PDP connection has dropped (active=false case). "
                                    + " Reconnecting");

@@ -1029,7 +1020,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
            }
        }
    }
    }

    private void notifyDefaultData(ApnContext apnContext) {
        if (DBG)
@@ -1178,7 +1168,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
                    // It's possible the PDP context went down and we weren't notified.
                    // Start polling the context list in an attempt to recover.
                    if (DBG) log("no DATAIN in a while; polling PDP");
                    mPhone.mCM.getDataCallList(obtainMessage(EVENT_GET_PDP_LIST_COMPLETE));
                    mPhone.mCM.getDataCallList(obtainMessage(EVENT_DATA_STATE_CHANGED));

                    mNoRecvPollCount++;

@@ -1613,7 +1603,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
    protected void onPollPdp() {
        if (getOverallState() == State.CONNECTED) {
            // only poll when connected
            mPhone.mCM.getPDPContextList(this.obtainMessage(EVENT_GET_PDP_LIST_COMPLETE));
            mPhone.mCM.getDataCallList(this.obtainMessage(EVENT_DATA_STATE_CHANGED));
            sendMessageDelayed(obtainMessage(EVENT_POLL_PDP), POLL_PDP_MILLIS);
        }
    }
@@ -1893,11 +1883,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
                break;

            case EVENT_DATA_STATE_CHANGED:
                onDataStateChanged((AsyncResult) msg.obj, false);
                break;

            case EVENT_GET_PDP_LIST_COMPLETE:
                onDataStateChanged((AsyncResult) msg.obj, true);
                onDataStateChanged((AsyncResult) msg.obj);
                break;

            case EVENT_POLL_PDP: