diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-03-11 01:04:34 -0600 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2014-03-11 01:04:34 -0600 |
commit | 02189b7b7da4e6338cea971a32ff7b16fae215d4 (patch) | |
tree | e3af6ec6c385339627d48e277a136c92a9de0953 | |
parent | 52f5fc3353bc1827373f4fc8017b9bc03fed2d89 (diff) | |
parent | 01d52d5020942e9fd3f020f910d8d59c28cc5fbd (diff) | |
download | android_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.java | 13 |
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 { |