/************************ * DeleteParticipant * Borra un participante *************************/ int MultiConf::DeleteParticipant(int id) { Log(">DeleteParticipant [%d]\n",id); //Stop recording participant just in case StopRecordingParticipant(id); //Block participantsLock.WaitUnusedAndLock(); //El iterator Participants::iterator it = participants.find(id); //Si no esta if (it == participants.end()) { //Unlock participantsLock.Unlock(); //Exit return Error("Participant not found\n"); } //LO obtenemos Participant *part = it->second; part->SetGroupVideoStream(NULL); Log("-DeleteParticipant ending media [%d]\n",id); //Y lo quitamos del mapa participants.erase(it); //Unlock participantsLock.Unlock(); //Destroy participatn DestroyParticipant(id,part); //Terminamos el audio y el video if(m_CurrentBroadCaster == id && participants.size()) { Log("BroadCaster exist use the first coming user\n"); participants.begin()->second->SetGroupVideoStream(&m_GroupVideo); m_CurrentBroadCaster = participants.begin()->second->GetPartId(); participants.begin()->second->SendVideoFPU(); } else if(m_CurrentBroadCaster == id && participants.size() == 0) { Log("BroadCaster and no user left\n"); m_CurrentBroadCaster = 0; } Log("<DeleteParticipant [%d]\n",id); return 1; }
/************************ * DeleteParticipant * Borra un participante *************************/ int MultiConf::DeleteParticipant(int id) { Log(">DeleteParticipant [%d]\n",id); //Stop recording participant just in case StopRecordingParticipant(id); //Block participantsLock.WaitUnusedAndLock(); //El iterator Participants::iterator it = participants.find(id); //Si no esta if (it == participants.end()) { //Unlock participantsLock.Unlock(); //Exit return Error("Participant not found\n"); } //LO obtenemos Participant *part = it->second; //Y lo quitamos del mapa participants.erase(it); //Unlock participantsLock.Unlock(); //Destroy participatn DestroyParticipant(id,part); Log("<DeleteParticipant [%d]\n",id); return 1; }