Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7dd727e authored by Shriram Ganesh's avatar Shriram Ganesh
Browse files

Fix a bug where conference call does not automatically resume.

The scenario is a background conference call and a foreground call
in dialing state. When user cancels the foreground call, the
background conference call is not automically resumed. This is
because the logic for making a held call as the foreground call
depends on there being only one call in the list of calls
maintained by CallsManager. However, in a conference scenario there
is more than one call object which are children of a top level
conference call. The fix is to check the number of top level calls
in held state.

Change-Id: I4092e8c38ac6217002ef426d7674f8a6e4c837ab
CRs-Fixed: 946284
parent f202c697
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -1313,6 +1313,16 @@ public class CallsManager extends Call.ListenerBase implements VideoProviderProx
        return count;
    }

    int getNumTopLevelCalls() {
        int count = 0;
        for (Call call : mCalls) {
            if (call.getParentCall() == null) {
                count++;
            }
        }
        return count;
    }

    Call getOutgoingCall() {
        return getFirstCallWithState(OUTGOING_CALL_STATES);
    }
@@ -1582,7 +1592,7 @@ public class CallsManager extends Call.ListenerBase implements VideoProviderProx
                }

                // If only call in call list is held call it's also a foreground call
                if (mCalls.size() == 1 && call.getState() == CallState.ON_HOLD) {
                if (getNumTopLevelCalls() == 1 && call.getState() == CallState.ON_HOLD) {
                    newForegroundCall = call;
                }

@@ -1615,7 +1625,7 @@ public class CallsManager extends Call.ListenerBase implements VideoProviderProx
                }

                // If only call in call list is held call it's also a foreground call
                if (mCalls.size() == 1 && call.getState() == CallState.ON_HOLD) {
                if (getNumTopLevelCalls() == 1 && call.getState() == CallState.ON_HOLD) {
                    newForegroundCall = call;
                }