aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-03-11 01:04:34 -0600
committerLinux Build Service Account <lnxbuild@localhost>2014-03-11 01:04:34 -0600
commit02189b7b7da4e6338cea971a32ff7b16fae215d4 (patch)
treee3af6ec6c385339627d48e277a136c92a9de0953
parent52f5fc3353bc1827373f4fc8017b9bc03fed2d89 (diff)
parent01d52d5020942e9fd3f020f910d8d59c28cc5fbd (diff)
downloadandroid_frameworks_opt_telephony-02189b7b7da4e6338cea971a32ff7b16fae215d4.tar.gz
android_frameworks_opt_telephony-02189b7b7da4e6338cea971a32ff7b16fae215d4.tar.bz2
android_frameworks_opt_telephony-02189b7b7da4e6338cea971a32ff7b16fae215d4.zip
Merge 01d52d5020942e9fd3f020f910d8d59c28cc5fbd on remote branch
Change-Id: I5a8963e42dea0a788f490b4f3a024408569c4822
-rw-r--r--src/java/com/android/internal/telephony/ServiceStateTracker.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/ServiceStateTracker.java b/src/java/com/android/internal/telephony/ServiceStateTracker.java
index 75a7f42e0..35ddb0639 100644
--- a/src/java/com/android/internal/telephony/ServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/ServiceStateTracker.java
@@ -193,6 +193,8 @@ public abstract class ServiceStateTracker extends Handler {
"tg", // Togo
};
+ private ArrayList<CellInfoResult> mCellInfoWaitList;
+
private class CellInfoResult {
List<CellInfo> list;
Object lockObj = new Object();
@@ -206,6 +208,7 @@ public abstract class ServiceStateTracker extends Handler {
mPhoneBase = phoneBase;
mCellInfo = cellInfo;
mCi = ci;
+ mCellInfoWaitList = new ArrayList<CellInfoResult>();
mVoiceCapable = mPhoneBase.getContext().getResources().getBoolean(
com.android.internal.R.bool.config_voice_capable);
mUiccController = UiccController.getInstance();
@@ -221,6 +224,13 @@ public abstract class ServiceStateTracker extends Handler {
mCi.unSetOnSignalStrengthUpdate(this);
mUiccController.unregisterForIccChanged(this);
mCi.unregisterForCellInfoList(this);
+ for (CellInfoResult result : mCellInfoWaitList) {
+ synchronized(result.lockObj) {
+ result.list = null;
+ result.lockObj.notify();
+ }
+ }
+ mCellInfoWaitList.clear();
}
public boolean getDesiredPowerState() {
@@ -419,6 +429,7 @@ public abstract class ServiceStateTracker extends Handler {
mLastCellInfoListTime = SystemClock.elapsedRealtime();
mLastCellInfoList = result.list;
result.lockObj.notify();
+ mCellInfoWaitList.remove(result);
}
break;
}
@@ -739,10 +750,12 @@ public abstract class ServiceStateTracker extends Handler {
synchronized(result.lockObj) {
mCi.getCellInfoList(msg);
try {
+ mCellInfoWaitList.add(result);
result.lockObj.wait();
} catch (InterruptedException e) {
e.printStackTrace();
result.list = null;
+ mCellInfoWaitList.remove(result);
}
}
} else {