diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2012-07-02 14:48:28 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-07-02 14:48:28 -0700 |
commit | 2a2d5e0b31d8a4dafa7dc5c68a68debbe837b04d (patch) | |
tree | d6b22e7936759631f2eb12ab25bd3d154bf0baaa /telephony/java | |
parent | 1fe7a81383a0b7c87be2cc4291e1ede9d85bf819 (diff) | |
parent | 2686b058cd2f01299cf5fd43f24ebbdc7339d70e (diff) | |
download | frameworks_base-2a2d5e0b31d8a4dafa7dc5c68a68debbe837b04d.zip frameworks_base-2a2d5e0b31d8a4dafa7dc5c68a68debbe837b04d.tar.gz frameworks_base-2a2d5e0b31d8a4dafa7dc5c68a68debbe837b04d.tar.bz2 |
Merge "When we disconnect shutdown the StateMachine. DO NOT MERGE" into jb-dev-plus-aosp
Diffstat (limited to 'telephony/java')
3 files changed, 31 insertions, 20 deletions
diff --git a/telephony/java/com/android/internal/telephony/DataConnection.java b/telephony/java/com/android/internal/telephony/DataConnection.java index 02f0d03..a6bd85e 100644 --- a/telephony/java/com/android/internal/telephony/DataConnection.java +++ b/telephony/java/com/android/internal/telephony/DataConnection.java @@ -17,7 +17,6 @@ package com.android.internal.telephony; -import com.android.internal.telephony.DataCallState.SetupResult; import com.android.internal.util.AsyncChannel; import com.android.internal.util.Protocol; import com.android.internal.util.State; @@ -39,6 +38,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; /** * {@hide} @@ -65,8 +65,7 @@ public abstract class DataConnection extends StateMachine { protected static final boolean DBG = true; protected static final boolean VDBG = false; - protected static Object mCountLock = new Object(); - protected static int mCount; + protected static AtomicInteger mCount = new AtomicInteger(0); protected AsyncChannel mAc; protected List<ApnContext> mApnList = null; @@ -260,7 +259,6 @@ public abstract class DataConnection extends StateMachine { protected abstract void log(String s); - //***** Constructor protected DataConnection(PhoneBase phone, String name, int id, RetryManager rm, DataConnectionTracker dct) { @@ -287,6 +285,27 @@ public abstract class DataConnection extends StateMachine { } /** + * Shut down this instance and its state machine. + */ + private void shutDown() { + if (DBG) log("shutDown"); + + if (mAc != null) { + mAc.disconnected(); + mAc = null; + } + mApnList = null; + mReconnectIntent = null; + mDataConnectionTracker = null; + mApn = null; + phone = null; + mLinkProperties = null; + mCapabilities = null; + lastFailCause = null; + userData = null; + } + + /** * TearDown the data connection. * * @param o will be returned in AsyncResult.userObj @@ -619,9 +638,11 @@ public abstract class DataConnection extends StateMachine { @Override public void exit() { phone.mCM.unregisterForRilConnected(getHandler()); + shutDown(); } @Override public boolean processMessage(Message msg) { + boolean retVal = HANDLED; AsyncResult ar; switch (msg.what) { @@ -639,14 +660,9 @@ public abstract class DataConnection extends StateMachine { } break; } - case AsyncChannel.CMD_CHANNEL_DISCONNECT: { - if (VDBG) log("CMD_CHANNEL_DISCONNECT"); - mAc.disconnect(); - break; - } case AsyncChannel.CMD_CHANNEL_DISCONNECTED: { if (VDBG) log("CMD_CHANNEL_DISCONNECTED"); - mAc = null; + quit(); break; } case DataConnectionAc.REQ_IS_INACTIVE: { @@ -784,7 +800,7 @@ public abstract class DataConnection extends StateMachine { break; } - return HANDLED; + return retVal; } } private DcDefaultState mDefaultState = new DcDefaultState(); diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java index 4ef05ea..141736c 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java @@ -51,11 +51,8 @@ public class CdmaDataConnection extends DataConnection { */ static CdmaDataConnection makeDataConnection(CDMAPhone phone, int id, RetryManager rm, DataConnectionTracker dct) { - synchronized (mCountLock) { - mCount += 1; - } - CdmaDataConnection cdmaDc = new CdmaDataConnection(phone, "CdmaDC-" + mCount, - id, rm, dct); + CdmaDataConnection cdmaDc = new CdmaDataConnection(phone, + "CdmaDC-" + mCount.incrementAndGet(), id, rm, dct); cdmaDc.start(); if (DBG) cdmaDc.log("Made " + cdmaDc.getName()); return cdmaDc; diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java index 9801721..3e6d9a5 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java @@ -56,10 +56,8 @@ public class GsmDataConnection extends DataConnection { */ static GsmDataConnection makeDataConnection(PhoneBase phone, int id, RetryManager rm, DataConnectionTracker dct) { - synchronized (mCountLock) { - mCount += 1; - } - GsmDataConnection gsmDc = new GsmDataConnection(phone, "GsmDC-" + mCount, id, rm, dct); + GsmDataConnection gsmDc = new GsmDataConnection(phone, + "GsmDC-" + mCount.incrementAndGet(), id, rm, dct); gsmDc.start(); if (DBG) gsmDc.log("Made " + gsmDc.getName()); return gsmDc; |