From 93a34c9ab4a567229dc1998debd46dde088c5551 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Tue, 22 Jun 2021 15:09:49 -0400
Subject: [PATCH] notify_one: cleanup

Change-Id: I26433e1463ecb261fb586431b6c43a3e6b931dcf
---
 src/jamidht/connectionmanager.cpp      | 19 +++++++++----------
 src/media/audio/jack/jacklayer.cpp     |  2 +-
 src/media/audio/opensl/opensllayer.cpp |  1 -
 3 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/jamidht/connectionmanager.cpp b/src/jamidht/connectionmanager.cpp
index c82fa823ea..3c1a438988 100644
--- a/src/jamidht/connectionmanager.cpp
+++ b/src/jamidht/connectionmanager.cpp
@@ -43,10 +43,10 @@ namespace jami {
 
 struct ConnectionInfo
 {
+    std::mutex mutex_ {};
     std::condition_variable responseCv_ {};
-    std::atomic_bool responseReceived_ {false};
+    bool responseReceived_ {false};
     PeerConnectionRequest response_ {};
-    std::mutex mutex_ {};
     std::unique_ptr<IceTransport> ice_ {nullptr};
     // Used to store currently non ready TLS Socket
     std::unique_ptr<TlsSocketEndpoint> tls_ {nullptr};
@@ -325,11 +325,10 @@ ConnectionManager::Impl::connectDeviceStartIce(const DeviceId& deviceId, const d
         return;
     }
 
-    auto& response = info->response_;
     if (!ice)
         return;
 
-    auto sdp = ice->parseIceCandidates(response.ice_msg);
+    auto sdp = ice->parseIceCandidates(info->response_.ice_msg);
 
     if (not ice->startIce({sdp.rem_ufrag, sdp.rem_pwd}, std::move(sdp.rem_candidates))) {
         JAMI_WARN("[Account:%s] start ICE failed", account.getAccountID().c_str());
@@ -607,14 +606,14 @@ ConnectionManager::Impl::onPeerResponse(const PeerConnectionRequest& req)
 {
     auto device = req.from;
     JAMI_INFO() << account << " New response received from " << device.to_c_str();
-    auto info = getInfo(device, req.id);
-    if (!info) {
+    if (auto info = getInfo(device, req.id)) {
+        std::lock_guard<std::mutex> lk {info->mutex_};
+        info->responseReceived_ = true;
+        info->response_ = std::move(req);
+        info->responseCv_.notify_one();
+    } else {
         JAMI_WARN() << account << " respond received, but cannot find request";
-        return;
     }
-    info->responseReceived_ = true;
-    info->response_ = std::move(req);
-    info->responseCv_.notify_one();
 }
 
 void
diff --git a/src/media/audio/jack/jacklayer.cpp b/src/media/audio/jack/jacklayer.cpp
index 2db2c191be..571fc03234 100644
--- a/src/media/audio/jack/jacklayer.cpp
+++ b/src/media/audio/jack/jacklayer.cpp
@@ -413,8 +413,8 @@ void JackLayer::stopStream(AudioDeviceType)
         if (status_ != Status::Started)
             return;
         status_ = Status::Idle;
+        data_ready_.notify_one();
     }
-    data_ready_.notify_one();
 
     if (jack_deactivate(playbackClient_) or jack_deactivate(captureClient_)) {
         JAMI_ERR("JACK client could not deactivate");
diff --git a/src/media/audio/opensl/opensllayer.cpp b/src/media/audio/opensl/opensllayer.cpp
index 7480fc683f..27e8ce0b3b 100644
--- a/src/media/audio/opensl/opensllayer.cpp
+++ b/src/media/audio/opensl/opensllayer.cpp
@@ -308,7 +308,6 @@ void
 OpenSLLayer::engineServiceRec()
 {
     recCv.notify_one();
-    return;
 }
 
 void
-- 
GitLab