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