From 8a8212904fcfdc059d55bf457a101c572b32b968 Mon Sep 17 00:00:00 2001
From: alussier-cullen <alexander.lussier-cullen@savoirfairelinux.com>
Date: Tue, 18 Jul 2023 14:54:35 -0400
Subject: [PATCH] conference: prevent camera from opening on audio only
 conference creation

GitLab: #875
Change-Id: I45955e7de7ba2dd2bf5d35d1e1ad7a943cade6e6
---
 src/manager.cpp                   |  5 ++++-
 test/unitTest/call/conference.cpp | 16 ++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/manager.cpp b/src/manager.cpp
index 81f03376ee..4eeebe8e0d 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -1431,7 +1431,10 @@ Manager::joinParticipant(const std::string& accountId,
         return false;
     }
 
-    auto conf = std::make_shared<Conference>(account);
+    auto mediaAttr = call1->getMediaAttributeList();
+    if (mediaAttr.empty())
+        mediaAttr = call2->getMediaAttributeList();
+    auto conf = std::make_shared<Conference>(account, "", true, mediaAttr);
     account->attach(conf);
     emitSignal<libjami::CallSignal::ConferenceCreated>(account->getAccountID(), conf->getConfId());
 
diff --git a/test/unitTest/call/conference.cpp b/test/unitTest/call/conference.cpp
index 178d87a8fd..46e3aeb3f5 100644
--- a/test/unitTest/call/conference.cpp
+++ b/test/unitTest/call/conference.cpp
@@ -859,9 +859,25 @@ void
 ConferenceTest::testAudioConferenceConfInfo()
 {
     registerSignalHandlers();
+    auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId);
+    auto aliceUri = aliceAccount->getUsername();
 
     startConference(true);
 
+    // Check that alice's video is muted
+    auto aliceVideoMuted = [&]() {
+        int result = 0;
+        std::lock_guard<std::mutex> lock(pInfosMtx_);
+        for (auto i = 0u; i < pInfos_.size(); ++i) {
+            if (pInfos_[i]["uri"].find(aliceUri) != std::string::npos
+                && pInfos_[i]["videoMuted"] == "true"
+                && pInfos_[i]["sinkId"] == "host_video_0")
+                result += 1;
+        }
+        return result;
+    };
+    CPPUNIT_ASSERT(cv.wait_for(lk, 10s, [&] { return aliceVideoMuted() == 1; }));
+
     libjami::unregisterSignalHandlers();
 }
 
-- 
GitLab