merge in lmp-mr1-release history after reset to lmp-mr1-dev
diff --git a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
index 90bb683..f5f76cc 100644
--- a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
+++ b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
@@ -548,7 +548,8 @@
private void broadcastSimStateChanged(int slotId, String state, String reason) {
Intent i = new Intent(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
- i.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
+ i.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING
+ | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
i.putExtra(PhoneConstants.PHONE_NAME_KEY, "Phone");
i.putExtra(IccCardConstants.INTENT_KEY_ICC_STATE, state);
i.putExtra(IccCardConstants.INTENT_KEY_LOCKED_REASON, reason);
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
index 822ef8a..03137b2 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
@@ -1033,6 +1033,11 @@
ImsPhoneCall.State oldState = mBackgroundCall.getState();
processCallStateChange(imsCall, ImsPhoneCall.State.HOLDING,
DisconnectCause.NOT_DISCONNECTED);
+
+ // Note: If we're performing a switchWaitingOrHoldingAndActive, the call to
+ // processCallStateChange above may have caused the mBackgroundCall and
+ // mForegroundCall references below to change meaning. Watch out for this if you
+ // are reading through this code.
if (oldState == ImsPhoneCall.State.ACTIVE) {
// Note: This case comes up when we have just held a call in response to a
// switchWaitingOrHoldingAndActive. We now need to resume the background call.
@@ -1048,6 +1053,12 @@
if (mPendingMO != null) {
sendEmptyMessage(EVENT_DIAL_PENDINGMO);
}
+
+ // In this case there will be no call resumed, so we can assume that we
+ // are done switching fg and bg calls now.
+ // This may happen if there is no BG call and we are holding a call so that
+ // we can dial another one.
+ mSwitchingFgAndBgCalls = false;
}
}
}