From 9cffd900f1fe6df7ddbd628e3c5c9130d0708d6d Mon Sep 17 00:00:00 2001 From: liqiao49 Date: Sat, 15 Jul 2023 11:17:52 +0800 Subject: [PATCH] add source manager release mutex Signed-off-by: liqiao49 --- interfaces/ipc/include/distributed_input_source_stub.h | 6 ++++-- interfaces/ipc/src/distributed_input_source_stub.cpp | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/interfaces/ipc/include/distributed_input_source_stub.h b/interfaces/ipc/include/distributed_input_source_stub.h index 75484f0..5df3b2c 100644 --- a/interfaces/ipc/include/distributed_input_source_stub.h +++ b/interfaces/ipc/include/distributed_input_source_stub.h @@ -18,8 +18,9 @@ #include "i_distributed_source_input.h" -#include #include +#include +#include #include "iremote_stub.h" @@ -59,7 +60,8 @@ private: int32_t HandleUnregisterSimulationEventListener(MessageParcel &data, MessageParcel &reply); DISALLOW_COPY_AND_MOVE(DistributedInputSourceStub); private: - std::atomic sourceInitFlag_ {false}; + std::atomic sourceManagerInitFlag_ {false}; + std::mutex sourceManagerReleaseMutex_; }; } // namespace DistributedInput } // namespace DistributedHardware diff --git a/interfaces/ipc/src/distributed_input_source_stub.cpp b/interfaces/ipc/src/distributed_input_source_stub.cpp index 7a830ef..16d1984 100644 --- a/interfaces/ipc/src/distributed_input_source_stub.cpp +++ b/interfaces/ipc/src/distributed_input_source_stub.cpp @@ -31,7 +31,7 @@ DistributedInputSourceStub::~DistributedInputSourceStub() int32_t DistributedInputSourceStub::HandleInitDistributedHardware(MessageParcel &reply) { - if (sourceInitFlag_.load()) { + if (sourceManagerInitFlag_.load()) { DHLOGE("DistributedInputSourceStub already init."); return DH_SUCCESS; } @@ -40,12 +40,13 @@ int32_t DistributedInputSourceStub::HandleInitDistributedHardware(MessageParcel DHLOGE("DistributedInputSourceStub Init write ret failed"); return ERR_DH_INPUT_IPC_WRITE_TOKEN_VALID_FAIL; } - sourceInitFlag_.store(true); + sourceManagerInitFlag_.store(true); return DH_SUCCESS; } int32_t DistributedInputSourceStub::HandleReleaseDistributedHardware(MessageParcel &reply) { + std::unique_lock lock(sourceManagerReleaseMutex_); int32_t ret = Release(); if (!reply.WriteInt32(ret)) { DHLOGE("DistributedInputSourceStub release write ret failed");