From 24b198f8ccbbb8717f08ac0d2648bbc65bdcd1fd Mon Sep 17 00:00:00 2001 From: liwang <965027894@qq.com> Date: Tue, 2 Sep 2025 09:00:35 +0800 Subject: [PATCH] =?UTF-8?q?sts=5Fsubscribe.cpp=E6=96=87=E4=BB=B6=E4=B8=AD?= =?UTF-8?q?=E9=94=81=E7=9A=84=E4=BD=BF=E7=94=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liwang <965027894@qq.com> --- frameworks/ets/ani/include/sts_subscribe.h | 1 - frameworks/ets/ani/src/sts_subscribe.cpp | 15 +++------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/frameworks/ets/ani/include/sts_subscribe.h b/frameworks/ets/ani/include/sts_subscribe.h index e2e7b5a1a..26d45830c 100644 --- a/frameworks/ets/ani/include/sts_subscribe.h +++ b/frameworks/ets/ani/include/sts_subscribe.h @@ -82,7 +82,6 @@ public: bool SetObject(ani_env *env, ani_object obj); bool IsInit(); bool Compare(ani_env *env, ani_object obj); - bool Compare(std::shared_ptr instance); private: bool CallFunction(ani_env *env, const char* func, std::vector &parm); diff --git a/frameworks/ets/ani/src/sts_subscribe.cpp b/frameworks/ets/ani/src/sts_subscribe.cpp index 067336164..4ff318cca 100644 --- a/frameworks/ets/ani/src/sts_subscribe.cpp +++ b/frameworks/ets/ani/src/sts_subscribe.cpp @@ -88,6 +88,7 @@ void StsDistributedOperationCallback::OnStsOperationCallback(ani_env *env, const void StsDistributedOperationCallback::SetVm(ani_vm *vm) { + std::lock_guard l(lock_); etsVm_ = vm; } @@ -456,6 +457,7 @@ bool StsSubscriberInstance::IsInit() bool StsSubscriberInstance::Compare(ani_env *env, ani_object obj) { ANS_LOGD("enter"); + std::lock_guard l(lock_); if (!IsInit()) return false; if (obj == nullptr || env == nullptr) return false; ani_ref ref; @@ -465,17 +467,6 @@ bool StsSubscriberInstance::Compare(ani_env *env, ani_object obj) env->GlobalReference_Delete(ref); return (result == ANI_TRUE) ? true : false; } -bool StsSubscriberInstance::Compare(std::shared_ptr instance) -{ - ANS_LOGD("enter"); - if (instance == nullptr) return false; - if (instance->obj_ == obj_) { - ANS_LOGD("Compare is ture"); - return true; - } - ANS_LOGD("Compare is false"); - return false; -} bool StsSubscriberInstance::CallFunction(ani_env *env, const char *func, std::vector &parm) { ANS_LOGD("enter"); @@ -530,11 +521,11 @@ bool SubscriberInstanceManager::DelSubscriberInstancesInfo( ani_env *env, ani_object obj) { ANS_LOGD("enter"); + std::lock_guard lock(mutex_); if (obj == nullptr) { ANS_LOGE("obj is null"); return false; } - std::lock_guard lock(mutex_); for (auto it = subscriberInstances_.begin(); it != subscriberInstances_.end(); ++it) { if ((*it)->Compare(env, obj)) { DelDeletingSubscriber((*it)); -- Gitee