diff --git a/services/audio_service/server/include/audio_process_in_server.h b/services/audio_service/server/include/audio_process_in_server.h index eb5bc6988170d04adffab9438d2ef5a650720dc5..50bb9774c59fe16a7be7ff9657c8d5f04f4083a3 100644 --- a/services/audio_service/server/include/audio_process_in_server.h +++ b/services/audio_service/server/include/audio_process_in_server.h @@ -163,6 +163,7 @@ private: std::mutex innerCapStateMutex_; std::unordered_map innerCapStates_; ProcessReleaseCallback *releaseCallback_ = nullptr; + std::mutex registerProcessCbLock_; sptr object_ = nullptr; sptr deathRecipient_ = nullptr; diff --git a/services/audio_service/server/src/audio_process_in_server.cpp b/services/audio_service/server/src/audio_process_in_server.cpp index e265cc3beb19e2c0e31f3bdfc6f4e8bb67e8bfce..22604740a2249c480cd3a21416c4a1dd9979a754 100644 --- a/services/audio_service/server/src/audio_process_in_server.cpp +++ b/services/audio_service/server/src/audio_process_in_server.cpp @@ -495,6 +495,7 @@ void ProcessDeathRecipient::OnRemoteDied(const wptr &remote) int32_t AudioProcessInServer::RegisterProcessCb(const sptr& object) { + std::lock_guard lock(registerProcessCbLock_); sptr processCb = iface_cast(object); CHECK_AND_RETURN_RET_LOG(processCb != nullptr, ERR_INVALID_PARAM, "RegisterProcessCb obj cast failed"); deathRecipient_ = new ProcessDeathRecipient(this, releaseCallback_);