From 56401d41254a4512c6b99c7400e6992e4a47b460 Mon Sep 17 00:00:00 2001
From: Andreas Hatziiliou <andreas.hatziiliou@savoirfairelinux.com>
Date: Wed, 23 Oct 2024 17:09:18 -0400
Subject: [PATCH] swarms: add camera MRL for host

When starting a swarm call with video, the MRL for the host
wasn't set. Thus, the camera button would appear muted and
starting/stopping video would have unintended behavior.

GitLab: #1869

Change-Id: I6ee2204d5b49b856bfc72fb560f6623f9c7c874f
---
 src/libclient/callmodel.cpp | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/libclient/callmodel.cpp b/src/libclient/callmodel.cpp
index 6e3dc741e..ff5985365 100644
--- a/src/libclient/callmodel.cpp
+++ b/src/libclient/callmodel.cpp
@@ -231,7 +231,9 @@ public Q_SLOTS:
      * Listen from CallbacksHandler when a conference is created.
      * @param callId
      */
-    void slotConferenceCreated(const QString& accountId, const QString& conversationId, const QString& callId);
+    void slotConferenceCreated(const QString& accountId,
+                               const QString& conversationId,
+                               const QString& callId);
     void slotConferenceChanged(const QString& accountId,
                                const QString& callId,
                                const QString& state);
@@ -372,11 +374,14 @@ initializeMediaList(VectorMapStringString& mediaList, bool audioOnly)
                          {MediaAttributeKey::LABEL, "audio_0"}});
     if (audioOnly)
         return;
+    const auto defaultCamera = VideoManager::instance().getDefaultDevice();
+    QString cameraMRL = "camera://" + defaultCamera;
     mediaList.push_back({{MediaAttributeKey::MEDIA_TYPE, MediaAttributeValue::VIDEO},
                          {MediaAttributeKey::ENABLED, TRUE_STR},
                          {MediaAttributeKey::MUTED, FALSE_STR},
-                         {MediaAttributeKey::SOURCE, ""},
+                         {MediaAttributeKey::SOURCE, cameraMRL},
                          {MediaAttributeKey::LABEL, "video_0"}});
+    return;
 }
 
 QString
@@ -397,7 +402,8 @@ CallModel::createCall(const QString& uri, bool isAudioOnly, VectorMapStringStrin
             pimpl_->waitForConference_ = uri;
             return {};
         }
-        qWarning() << "no call placed between (account: " << owner.id << ", contact: " << uri << ")";
+        qWarning() << "no call placed between (account: " << owner.id << ", contact: " << uri
+                   << ")";
         return "";
     }
 
@@ -1708,7 +1714,9 @@ CallModel::hasCall(const QString& callId) const
 }
 
 void
-CallModelPimpl::slotConferenceCreated(const QString& accountId, const QString& conversationId, const QString& confId)
+CallModelPimpl::slotConferenceCreated(const QString& accountId,
+                                      const QString& conversationId,
+                                      const QString& confId)
 {
     if (accountId != linked.owner.id)
         return;
-- 
GitLab