Merge remote-tracking branch 'origin/LA.QSSI.11.0.R1.11.00.00.668.170.00' into fp4t-target-0414
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index ef0f8e3..f2833bc 100755
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -2259,6 +2259,8 @@
         setLocallyDisconnecting(true);
         maybeSetCallAsDisconnectingChild();
 
+        maybeSetChildCallAsDisconnecting();
+
         if (mState == CallState.NEW || mState == CallState.SELECT_PHONE_ACCOUNT ||
                 mState == CallState.CONNECTING) {
             Log.v(this, "Aborting call %s", this);
@@ -2286,6 +2288,14 @@
         }
     }
 
+    private void maybeSetChildCallAsDisconnecting() {
+        if (mParentCall == null) {
+            for (Call childCall : getChildCalls()) {
+                childCall.maybeSetCallAsDisconnectingChild();
+            }
+        }
+    }
+
     void abort(long disconnectionTimeout) {
         if (mCreateConnectionProcessor != null &&
                 !mCreateConnectionProcessor.isProcessingComplete()) {
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index dfe0d88..bca3de9 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -2777,7 +2777,8 @@
         List<PhoneAccountHandle> allAccounts =
                 mPhoneAccountRegistrar.getCallCapablePhoneAccounts(handle.getScheme(), false, user,
                         capabilities,
-                        isEmergency ? 0 : PhoneAccount.CAPABILITY_EMERGENCY_CALLS_ONLY);
+                        0
+                        /*isEmergency ? 0 : PhoneAccount.CAPABILITY_EMERGENCY_CALLS_ONLY*/);// add by T2M.zhangrenjie for FP4-1607 2021-07-21 end
 
         // If no phone account is found, let's query emergency call only account again.
         // That is happening while emergency account has capability CAPABILITY_EMERGENCY_CALLS_ONLY.
@@ -3115,6 +3116,7 @@
                 // call which was disconnected is a member of a conference (don't want to auto
                 // un-hold the conference if we remove a member of the conference).
                 if (!isDisconnectingChildCall && foregroundCall != null
+                        && !foregroundCall.isDisconnectingChildCall()
                         && foregroundCall.getState() == CallState.ON_HOLD) {
                     foregroundCall.unhold();
                 }
diff --git a/src/com/android/server/telecom/CreateConnectionProcessor.java b/src/com/android/server/telecom/CreateConnectionProcessor.java
index 700dac7..0a8a6c4 100644
--- a/src/com/android/server/telecom/CreateConnectionProcessor.java
+++ b/src/com/android/server/telecom/CreateConnectionProcessor.java
@@ -657,7 +657,7 @@
             }
 
             // then by hashcode
-            return account1.hashCode() - account2.hashCode();
+            return Integer.compare(account1.hashCode(), account2.hashCode());
         });
     }