From bc93c371aeb86892646b2e279b91048c928c37be Mon Sep 17 00:00:00 2001 From: w30042960 Date: Fri, 7 Jun 2024 11:18:07 +0800 Subject: [PATCH] add mutex Signed-off-by: w30042960 --- .../managersink/include/daudio_sink_manager.h | 1 + .../audiomanager/managersink/src/daudio_sink_manager.cpp | 7 +++++-- .../managersource/include/daudio_source_manager.h | 1 + .../managersource/src/daudio_source_manager.cpp | 8 +++++--- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/services/audiomanager/managersink/include/daudio_sink_manager.h b/services/audiomanager/managersink/include/daudio_sink_manager.h index a78776c2..e84c1291 100644 --- a/services/audiomanager/managersink/include/daudio_sink_manager.h +++ b/services/audiomanager/managersink/include/daudio_sink_manager.h @@ -80,6 +80,7 @@ private: std::mutex devMapMutex_; std::unordered_map> audioDevMap_; std::mutex remoteSvrMutex_; + std::mutex ipcCallbackMutex_; std::map> sourceServiceMap_; std::thread devClearThread_; std::string localNetworkId_; diff --git a/services/audiomanager/managersink/src/daudio_sink_manager.cpp b/services/audiomanager/managersink/src/daudio_sink_manager.cpp index f1c92d9e..7ce29f14 100644 --- a/services/audiomanager/managersink/src/daudio_sink_manager.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_manager.cpp @@ -63,8 +63,11 @@ DAudioSinkManager::~DAudioSinkManager() int32_t DAudioSinkManager::Init(const sptr &sinkCallback) { DHLOGI("Init audio sink manager."); - initCallback_ = std::make_shared(); - ipcSinkCallback_ = sinkCallback; + { + std::lock_guard lock(ipcCallbackMutex_); + initCallback_ = std::make_shared(); + ipcSinkCallback_ = sinkCallback; + } CHECK_AND_RETURN_RET_LOG(GetLocalDeviceNetworkId(localNetworkId_) != DH_SUCCESS, ERR_DH_AUDIO_FAILED, "%{public}s", "Get local network id failed."); CHECK_AND_RETURN_RET_LOG(LoadAVReceiverEngineProvider() != DH_SUCCESS, diff --git a/services/audiomanager/managersource/include/daudio_source_manager.h b/services/audiomanager/managersource/include/daudio_source_manager.h index 2c86a6b1..c0cf00bf 100644 --- a/services/audiomanager/managersource/include/daudio_source_manager.h +++ b/services/audiomanager/managersource/include/daudio_source_manager.h @@ -84,6 +84,7 @@ private: std::mutex devMapMtx_; std::map audioDevMap_; std::mutex remoteSvrMutex_; + std::mutex ipcCallbackMutex_; std::map> sinkServiceMap_; sptr ipcCallback_ = nullptr; std::shared_ptr daudioMgrCallback_ = nullptr; diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index 692adcf6..d0932a40 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -79,9 +79,11 @@ int32_t DAudioSourceManager::Init(const sptr &callback) DHLOGE("Get local network id failed."); return ERR_DH_AUDIO_FAILED; } - - ipcCallback_ = callback; - daudioMgrCallback_ = std::make_shared(); + { + std::lock_guard lock(ipcCallbackMutex_); + ipcCallback_ = callback; + daudioMgrCallback_ = std::make_shared(); + } int32_t ret = LoadAVSenderEngineProvider(); if (ret != DH_SUCCESS) { DHLOGE("load av transport sender engine provider failed"); -- Gitee