diff --git a/frameworks/ets/ani/include/sts_subscribe.h b/frameworks/ets/ani/include/sts_subscribe.h index be90cc4717418bcc4215cf021bacff5b0679e800..4981d9b1282c97afc318fb17bde1bbac21db0666 100644 --- a/frameworks/ets/ani/include/sts_subscribe.h +++ b/frameworks/ets/ani/include/sts_subscribe.h @@ -83,7 +83,6 @@ public: bool IsInit(); bool Compare(ani_env *env, ani_object obj); bool Compare(ani_env *env, ani_ref ref); - 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 524ed688f2a8c0699994b989d557ea3c367b86ea..f9018270fb24ab07c233b3135f72b4ddbe1c674c 100644 --- a/frameworks/ets/ani/src/sts_subscribe.cpp +++ b/frameworks/ets/ani/src/sts_subscribe.cpp @@ -86,6 +86,7 @@ void StsDistributedOperationCallback::OnStsOperationCallback(ani_env *env, const void StsDistributedOperationCallback::SetVm(ani_vm *vm) { + std::lock_guard l(lock_); etsVm_ = vm; } @@ -455,6 +456,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; } @@ -483,19 +485,6 @@ bool StsSubscriberInstance::Compare(ani_env *env, ani_ref ref) env->Reference_StrictEquals(ref, ref_, &result); 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"); @@ -528,6 +517,7 @@ bool SubscriberInstanceManager::HasNotificationSubscriber( ani_env *env, ani_object value, std::shared_ptr &subscriberInfo) { ANS_LOGD("enter"); + std::lock_guard lock(mutex_); for (auto &iter : subscriberInstances_) { if (iter->Compare(env, value)) { subscriberInfo = iter;