diff --git a/src/conference/conference.cpp b/src/conference/conference.cpp index efba1bad8..9e22d0207 100644 --- a/src/conference/conference.cpp +++ b/src/conference/conference.cpp @@ -141,6 +141,19 @@ shared_ptr Conference::findParticipant (const shared_ptr Conference::findParticipantDevice (const shared_ptr &session) const { + L_D(); + + for (const auto &participant : d->participants) { + for (const auto &device : participant->getPrivate()->getDevices()) { + if (device->getSession() == session) + return device; + } + } + + return nullptr; +} + bool Conference::isMe (const IdentityAddress &addr) const { L_D(); IdentityAddress cleanedAddr(addr); diff --git a/src/conference/conference.h b/src/conference/conference.h index 9891240ea..ed8d93637 100644 --- a/src/conference/conference.h +++ b/src/conference/conference.h @@ -34,6 +34,7 @@ class CallSession; class CallSessionListener; class CallSessionPrivate; class ConferencePrivate; +class ParticipantDevice; class LINPHONE_PUBLIC Conference : public ConferenceInterface, @@ -47,6 +48,7 @@ public: std::shared_ptr getActiveParticipant () const; std::shared_ptr findParticipant (const std::shared_ptr &session) const; + std::shared_ptr findParticipantDevice (const std::shared_ptr &session) const; /* ConferenceInterface */ void addParticipant (const IdentityAddress &addr, const CallSessionParams *params, bool hasMedia) override;