...
 
Commits (2)
......@@ -893,4 +893,9 @@ void ClientGroupChatRoom::onParticipantDeviceRemoved (const shared_ptr<Conferenc
_linphone_chat_room_notify_participant_device_removed(cr, L_GET_C_BACK_PTR(event));
}
void ClientGroupChatRoom::onParticipantsCleared () {
L_D_T(RemoteConference, dConference);
dConference->participants.clear();
}
LINPHONE_END_NAMESPACE
......@@ -127,6 +127,8 @@ private:
void onParticipantSetAdmin (const std::shared_ptr<ConferenceParticipantEvent> &event, bool isFullState) override;
void onSubjectChanged (const std::shared_ptr<ConferenceSubjectEvent> &event, bool isFullState) override;
void onParticipantsCleared () override;
L_DECLARE_PRIVATE(ClientGroupChatRoom);
L_DISABLE_COPY(ClientGroupChatRoom);
};
......
......@@ -538,7 +538,7 @@ void ServerGroupChatRoomPrivate::addParticipantDevice (const shared_ptr<Particip
inviteDevice(device);
break;
case ParticipantDevice::State::Left:
if (!findFilteredParticipant(participant->getAddress()))
if (findFilteredParticipant(participant->getAddress()))
inviteDevice(device);
break;
case ParticipantDevice::State::Leaving:
......
......@@ -44,6 +44,8 @@ public:
virtual void onSubjectChanged (const std::shared_ptr<ConferenceSubjectEvent> &event, bool isFullState) {}
virtual void onParticipantDeviceAdded (const std::shared_ptr<ConferenceParticipantDeviceEvent> &event, bool isFullState) {}
virtual void onParticipantDeviceRemoved (const std::shared_ptr<ConferenceParticipantDeviceEvent> &event, bool isFullState) {}
virtual void onParticipantsCleared () {}
};
LINPHONE_END_NAMESPACE
......
......@@ -95,9 +95,11 @@ void RemoteConferenceEventHandlerPrivate::simpleNotifyReceived (const string &xm
}
}
if (isFullState)
confListener->onParticipantsCleared();
auto &users = confInfo->getUsers();
if (!users.present())
return;
if (!users.present()) return;
// 4. Notify changes on users.
for (auto &user : users->getUser()) {
......@@ -150,7 +152,7 @@ void RemoteConferenceEventHandlerPrivate::simpleNotifyReceived (const string &xm
for (const auto &endpoint : user.getEndpoint()) {
if (!endpoint.getEntity().present())
break;
continue;
Address gruu(endpoint.getEntity().get());
StateType state = endpoint.getState();
......