From b788f5a71861b847fd588f56b0f6d524b77cd26b Mon Sep 17 00:00:00 2001 From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> Date: Fri, 1 Mar 2019 15:47:38 -0500 Subject: [PATCH] manager: don't put calls on hold by default Change-Id: Ica87e58b8c731ab1b73cb74d73d66448ac182f9b --- src/manager.cpp | 66 ------------------------------------------------- 1 file changed, 66 deletions(-) diff --git a/src/manager.cpp b/src/manager.cpp index 8a36555a11..388d93286f 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -920,18 +920,6 @@ Manager::outgoingCall(const std::string& account_id, stopTone(); - // in any cases we have to detach from current communication - if (hasCurrentCall()) { - JAMI_DBG("Has current call (%s) put it onhold", current_call_id.c_str()); - - bool isConf = isConference(current_call_id); - // if this is not a conference and this and is not a conference participant - if (not isConf and not isConferenceParticipant(current_call_id)) - onHoldCall(current_call_id); - else if (isConf and not isConferenceParticipant(call_id)) - detachLocalParticipant(); - } - pimpl_->switchCall(call); call->setConfId(conf_id); @@ -956,22 +944,6 @@ Manager::answerCall(const std::string& call_id) // store the current call id const auto& current_call_id(getCurrentCallId()); - // in any cases we have to detach from current communication - if (hasCurrentCall() and call_id != current_call_id) { - - JAMI_DBG("Currently conversing with %s", current_call_id.c_str()); - - bool isConf = isConference(current_call_id); - if (not isConf and not isConferenceParticipant(current_call_id)) { - JAMI_DBG("Answer call: Put the current call (%s) on hold", current_call_id.c_str()); - onHoldCall(current_call_id); - } else if (isConf and not isConferenceParticipant(call_id)) { - // if we are talking to a conference and we are answering an incoming call - JAMI_DBG("Detach main participant from conference"); - detachLocalParticipant(); - } - } - try { call->answer(); } catch (const std::runtime_error &e) { @@ -1128,19 +1100,6 @@ Manager::offHoldCall(const std::string& callId) stopTone(); - const auto& currentCallId = getCurrentCallId(); - // Place current call on hold if it isn't - if (hasCurrentCall() and currentCallId != callId) { - bool isConf = isConference(currentCallId); - if (not isConf and not isConferenceParticipant(currentCallId)) { - JAMI_DBG("Has current call (%s), put on hold", currentCallId.c_str()); - onHoldCall(currentCallId); - } else if (isConf and not isConferenceParticipant(callId)) { - holdConference(currentCallId); - detachLocalParticipant(); - } - } - std::shared_ptr<Call> call = getCallFromCallID(callId); if (!call) return false; @@ -1395,14 +1354,6 @@ Manager::addParticipant(const std::string& callId, // store the current call id (it will change in offHoldCall or in answerCall) auto current_call_id = getCurrentCallId(); - // detach from prior communication and switch to this conference - if (current_call_id != callId) { - if (isConference(current_call_id)) - detachLocalParticipant(); - else - onHoldCall(current_call_id); - } - pimpl_->bindCallToConference(*call, *iter->second); // TODO: remove this ugly hack => There should be different calls when double clicking @@ -1420,14 +1371,6 @@ Manager::addParticipant(const std::string& callId, bool Manager::addMainParticipant(const std::string& conference_id) { - if (hasCurrentCall()) { - std::string current_call_id(getCurrentCallId()); - - if (isConference(current_call_id)) - detachLocalParticipant(); - else - onHoldCall(current_call_id); - } { std::lock_guard<std::mutex> lock(pimpl_->audioLayerMutex_); @@ -1491,15 +1434,6 @@ Manager::joinParticipant(const std::string& callId1, const std::string& callId2) return false; } - // detach/hold current active call if it's not a participant - auto current_call_id = getCurrentCallId(); - if ((current_call_id != callId1) and (current_call_id != callId2)) { - if (isConference(current_call_id)) - detachLocalParticipant(); - else - onHoldCall(current_call_id); // currently in a call - } - auto conf = std::make_shared<Conference>(); // Bind calls according to their state -- GitLab