diff --git a/src/manager.cpp b/src/manager.cpp index 9b5f19a88dce4508aa81f1ecc34c6a755ad80c44..760d6ba0416b5855a909dfbc428800950c028ef9 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -1268,10 +1268,7 @@ bool Manager::holdConference(const std::string& id) { if (auto conf = getConferenceFromID(id)) { - for (const auto &item : conf->getParticipantList()) - onHoldCall(item); - - conf->setState(Conference::State::HOLD); + conf->detach(); emitSignal<DRing::CallSignal::ConferenceChanged>(conf->getConfID(), conf->getStateStr()); return true; } @@ -1292,6 +1289,8 @@ Manager::unHoldConference(const std::string& id) conf->setState(Conference::State::ACTIVE_ATTACHED); emitSignal<DRing::CallSignal::ConferenceChanged>(conf->getConfID(), conf->getStateStr()); return true; + } else if (conf->getState() == Conference::State::ACTIVE_DETACHED) { + pimpl_->addMainParticipant(*conf); } } return false;