From cbdfe26dd1a1e976559b693a4e44bc2ba3398065 Mon Sep 17 00:00:00 2001
From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
Date: Tue, 14 Feb 2023 11:54:19 -0300
Subject: [PATCH] callmodel: keep only one shared source in call

Change-Id: I561db4414c92419946cc1f7233979b1cf8841055
GitLab: #960
---
 src/libclient/callmodel.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/libclient/callmodel.cpp b/src/libclient/callmodel.cpp
index c87311cf4..570cbe4ba 100644
--- a/src/libclient/callmodel.cpp
+++ b/src/libclient/callmodel.cpp
@@ -565,9 +565,13 @@ CallModel::addMedia(const QString& callId, const QString& source, MediaRequestTy
     for (auto& media : proposedList) {
         auto replace = media[MediaAttributeKey::MEDIA_TYPE] == MediaAttributeValue::VIDEO;
         // In a 1:1 we replace the first video, in a conference we replace only if it's a muted
-        // video as we show multiple previews
-        if (isConf)
+        // video or if a new sharing is requested
+        if (isConf) {
             replace &= media[MediaAttributeKey::MUTED] == TRUE_STR;
+            replace |= (media[MediaAttributeKey::SOURCE].startsWith(libjami::Media::VideoProtocolPrefix::FILE)
+                          || media[MediaAttributeKey::SOURCE].startsWith(libjami::Media::VideoProtocolPrefix::DISPLAY))
+                      && (type == MediaRequestType::FILESHARING || type == MediaRequestType::SCREENSHARING);
+        }
         if (replace) {
             mediaAttribute[MediaAttributeKey::LABEL] = media[MediaAttributeKey::LABEL];
             media = mediaAttribute;
-- 
GitLab