From 74a44f8c03e16461e07422c34217741e0415dedc Mon Sep 17 00:00:00 2001 From: Bobie Date: Mon, 24 Jul 2023 20:43:21 +0800 Subject: [PATCH] add the mutex lock for DAudioIpcCallback's member. Signed-off-by: Bobie --- .../native_cpp/audio_source/include/daudio_ipc_callback.h | 3 +++ .../native_cpp/audio_source/src/daudio_ipc_callback.cpp | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/interfaces/inner_kits/native_cpp/audio_source/include/daudio_ipc_callback.h b/interfaces/inner_kits/native_cpp/audio_source/include/daudio_ipc_callback.h index 1d316a42..077c24c8 100644 --- a/interfaces/inner_kits/native_cpp/audio_source/include/daudio_ipc_callback.h +++ b/interfaces/inner_kits/native_cpp/audio_source/include/daudio_ipc_callback.h @@ -17,6 +17,7 @@ #define OHOS_DAUDIO_IPC_CALLBACK_H #include +#include #include "daudio_ipc_callback_stub.h" #include "idistributed_hardware_source.h" @@ -39,7 +40,9 @@ public: void PopUnregisterCallback(const std::string &reqId); private: + std::mutex registerMapMtx_; std::map> registerCallbackMap_; + std::mutex unregisterMapMtx_; std::map> unregisterCallbackMap_; }; } // DistributedHardware diff --git a/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback.cpp b/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback.cpp index 1e97d15b..8dd18475 100644 --- a/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback.cpp +++ b/interfaces/inner_kits/native_cpp/audio_source/src/daudio_ipc_callback.cpp @@ -35,6 +35,7 @@ int32_t DAudioIpcCallback::OnNotifyRegResult(const std::string &devId, const std reqId.length() > DAUDIO_MAX_DEVICE_ID_LEN) { return ERR_DH_AUDIO_SA_DEVID_ILLEGAL; } + std::lock_guard registerLck(registerMapMtx_); auto iter = registerCallbackMap_.find(reqId); if (iter != registerCallbackMap_.end()) { iter->second->OnRegisterResult(devId, dhId, status, resultData); @@ -55,6 +56,7 @@ int32_t DAudioIpcCallback::OnNotifyUnregResult(const std::string &devId, const s reqId.length() > DAUDIO_MAX_DEVICE_ID_LEN) { return ERR_DH_AUDIO_SA_DEVID_ILLEGAL; } + std::lock_guard registerLck(unregisterMapMtx_); auto iter = unregisterCallbackMap_.find(reqId); if (iter != unregisterCallbackMap_.end()) { iter->second->OnUnregisterResult(devId, dhId, status, resultData); @@ -68,12 +70,14 @@ void DAudioIpcCallback::PushRegisterCallback(const std::string &reqId, const std::shared_ptr &callback) { DHLOGD("Push register callback, reqId: %s", reqId.c_str()); + std::lock_guard registerLck(registerMapMtx_); registerCallbackMap_.emplace(reqId, callback); } void DAudioIpcCallback::PopRegisterCallback(const std::string &reqId) { DHLOGD("Pop register callback, reqId: %s", reqId.c_str()); + std::lock_guard registerLck(registerMapMtx_); registerCallbackMap_.erase(reqId); } @@ -81,12 +85,14 @@ void DAudioIpcCallback::PushUnregisterCallback(const std::string &reqId, const std::shared_ptr &callback) { DHLOGD("Push unregister callback, reqId: %s", reqId.c_str()); + std::lock_guard registerLck(unregisterMapMtx_); unregisterCallbackMap_.emplace(reqId, callback); } void DAudioIpcCallback::PopUnregisterCallback(const std::string &reqId) { DHLOGD("Pop unregister callback, reqId: %s", reqId.c_str()); + std::lock_guard registerLck(unregisterMapMtx_); unregisterCallbackMap_.erase(reqId); } } // DistributedHardware -- Gitee