From 04a8dfa468268f94c6ef16659a3b15d729266407 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Tue, 7 Nov 2023 11:31:21 -0500
Subject: [PATCH] callmodel: fix mute video

Change-Id: Ic0c05b9099bc21b8ee936cbe3aef641534d55f77
---
 src/app/avadapter.cpp         | 6 ++++--
 src/app/calladapter.cpp       | 2 +-
 src/libclient/api/callmodel.h | 4 +++-
 src/libclient/callmodel.cpp   | 5 +++--
 4 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/app/avadapter.cpp b/src/app/avadapter.cpp
index 9ef21900b..85d56ac74 100644
--- a/src/app/avadapter.cpp
+++ b/src/app/avadapter.cpp
@@ -320,14 +320,16 @@ AvAdapter::stopSharing(const QString& source)
                 ->removeMedia(callId,
                               libjami::Media::Details::MEDIA_TYPE_VIDEO,
                               libjami::Media::VideoProtocolPrefix::DISPLAY,
-                              muteCamera_);
+                              muteCamera_,
+                              true);
         } else {
             qDebug() << "Stopping file: " << source;
             lrcInstance_->getCurrentCallModel()
                 ->removeMedia(callId,
                               libjami::Media::Details::MEDIA_TYPE_VIDEO,
                               libjami::Media::VideoProtocolPrefix::FILE,
-                              muteCamera_);
+                              muteCamera_,
+                              true);
         }
     }
 }
diff --git a/src/app/calladapter.cpp b/src/app/calladapter.cpp
index 0a6e91520..f5036a947 100644
--- a/src/app/calladapter.cpp
+++ b/src/app/calladapter.cpp
@@ -976,7 +976,7 @@ CallAdapter::muteCameraToggle()
             callModel->removeMedia(callId,
                                    libjami::Media::Details::MEDIA_TYPE_VIDEO,
                                    libjami::Media::VideoProtocolPrefix::CAMERA,
-                                   mute);
+                                   mute, false);
         else
             callModel->addMedia(callId,
                                 lrcInstance_->avModel().getCurrentVideoCaptureDevice(),
diff --git a/src/libclient/api/callmodel.h b/src/libclient/api/callmodel.h
index 58a2b29ec..6840fbb52 100644
--- a/src/libclient/api/callmodel.h
+++ b/src/libclient/api/callmodel.h
@@ -125,11 +125,13 @@ public:
      * @param source        Of the media
      * @param type          Audio/video
      * @param mute
+     * @param removeAll     Remove Audio/Video
      */
     void removeMedia(const QString& callId,
                      const QString& mediaType,
                      const QString& type,
-                     bool muteCamera);
+                     bool muteCamera,
+                     bool removeAll);
 
     /**
      * Get the call from its call id
diff --git a/src/libclient/callmodel.cpp b/src/libclient/callmodel.cpp
index faf12a03c..fc799afcb 100644
--- a/src/libclient/callmodel.cpp
+++ b/src/libclient/callmodel.cpp
@@ -613,7 +613,8 @@ void
 CallModel::removeMedia(const QString& callId,
                        const QString& mediaType,
                        const QString& type,
-                       bool muteCamera)
+                       bool muteCamera,
+                       bool removeAll)
 {
     auto& callInfo = pimpl_->calls[callId];
     if (!callInfo)
@@ -629,7 +630,7 @@ CallModel::removeMedia(const QString& callId,
             replaceIdx = true;
             label = media[MediaAttributeKey::LABEL];
         } else {
-            if (!media[MediaAttributeKey::SOURCE].startsWith(type)) {
+            if (!removeAll || !media[MediaAttributeKey::SOURCE].startsWith(type)) {
                 if (media[MediaAttributeKey::MEDIA_TYPE] == mediaType) {
                     auto newMedia = media;
                     if (replaceIdx) {
-- 
GitLab