am f336efc8: am f5d61392: am 2f25c1f4: Fixing conference merge where only one party is added to conference.
* commit 'f336efc8bcd0e2a30e97f7db85ed69660c9d8b1e':
Fixing conference merge where only one party is added to conference.
diff --git a/src/com/android/services/telephony/ImsConferenceController.java b/src/com/android/services/telephony/ImsConferenceController.java
index 5df7ea0..e93ebd4 100644
--- a/src/com/android/services/telephony/ImsConferenceController.java
+++ b/src/com/android/services/telephony/ImsConferenceController.java
@@ -68,6 +68,12 @@
public void onDestroyed(Connection connection) {
remove(connection);
}
+
+ @Override
+ public void onConferenceStarted() {
+ Log.v(this, "onConferenceStarted");
+ recalculateConference();
+ }
};
/**
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index d4d1746..f434aea 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -186,6 +186,11 @@
private boolean mWasImsConnection;
/**
+ * Tracks the multiparty state of the ImsCall so that changes in the bit state can be detected.
+ */
+ private boolean mIsMultiParty = false;
+
+ /**
* Determines if the {@link TelephonyConnection} has local video capabilities.
* This is used when {@link TelephonyConnection#updateConnectionCapabilities()}} is called,
* ensuring the appropriate capabilities are set. Since capabilities
@@ -483,6 +488,7 @@
if (isImsConnection()) {
mWasImsConnection = true;
}
+ mIsMultiParty = mOriginalConnection.isMultiparty();
fireOnOriginalConnectionConfigured();
updateAddress();
@@ -633,6 +639,24 @@
}
updateConnectionCapabilities();
updateAddress();
+ updateMultiparty();
+ }
+
+ /**
+ * Checks for changes to the multiparty bit. If a conference has started, informs listeners.
+ */
+ private void updateMultiparty() {
+ if (mOriginalConnection == null) {
+ return;
+ }
+
+ if (mIsMultiParty != mOriginalConnection.isMultiparty()) {
+ mIsMultiParty = mOriginalConnection.isMultiparty();
+
+ if (mIsMultiParty) {
+ notifyConferenceStarted();
+ }
+ }
}
private void setActiveInternal() {