Merge "Fix a race-condition that returns incorrect foreground call"
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 8d164ec..7f3b359 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -1575,7 +1575,8 @@
                     break;
                 }
 
-                if (call.isAlive() || call.getState() == CallState.RINGING) {
+                if ((call.isAlive() && call.getState() != CallState.ON_HOLD)
+                     || call.getState() == CallState.RINGING) {
                     newForegroundCall = call;
                     // Don't break in case there's an active call that has priority.
                 }
@@ -1602,7 +1603,8 @@
                     break;
                 }
 
-                if (call.isAlive() || call.getState() == CallState.RINGING) {
+                if ((call.isAlive() && call.getState() != CallState.ON_HOLD)
+                     || call.getState() == CallState.RINGING) {
                     newForegroundCall = call;
                     // Don't break in case there's an active call that has priority.
                 }