From ad8c32f3028d13869d4c494ae14193ceba3281af Mon Sep 17 00:00:00 2001 From: Wink Saville Date: Sat, 15 Jan 2011 07:47:03 -0800 Subject: [PATCH] Set mIsMinInfoReady and mCurrentOtasp before notifcations. We were sending a notification before setting mIsMinInfoReady and mCurrentOtasp. This causes a race and it's possible that OtaUtils.maybeDoOtasp is called before before they are set. In this case the activation would not occur. Bug: 3339109 Change-Id: I3baf8992d58af63a5cc07a14cc33157fd1c5aaa3 --- .../cdma/CdmaServiceStateTracker.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index 17cf36dd2363f..2c5aa3c9a83b3 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -443,18 +443,21 @@ final class CdmaServiceStateTracker extends ServiceStateTracker { mMin = cdmaSubscription[3]; mPrlVersion = cdmaSubscription[4]; Log.d(LOG_TAG,"GET_CDMA_SUBSCRIPTION MDN=" + mMdn); - //Notify apps subscription info is ready + + mIsMinInfoReady = true; + + int otaspMode = getOtasp(); + int oldOtaspMode = mCurrentOtaspMode; + mCurrentOtaspMode = otaspMode; + + // Notify apps subscription info is ready if (cdmaForSubscriptionInfoReadyRegistrants != null) { + Log.d(LOG_TAG, "call cdmaForSubscriptionInfoReady.notifyRegistrants()"); cdmaForSubscriptionInfoReadyRegistrants.notifyRegistrants(); } - if (!mIsMinInfoReady) { - mIsMinInfoReady = true; - } - int otaspMode = getOtasp(); - if (mCurrentOtaspMode != otaspMode) { + if (oldOtaspMode != mCurrentOtaspMode) { Log.d(LOG_TAG, "call phone.notifyOtaspChanged old otaspMode=" + - mCurrentOtaspMode + " new otaspMode=" + otaspMode); - mCurrentOtaspMode = otaspMode; + oldOtaspMode + " new otaspMode=" + mCurrentOtaspMode); phone.notifyOtaspChanged(mCurrentOtaspMode); } phone.getIccCard().broadcastIccStateChangedIntent(IccCard.INTENT_VALUE_ICC_IMSI,