diff --git a/native_engine/native_safe_async_work.cpp b/native_engine/native_safe_async_work.cpp index fa141a8874cea1591c6a37d3759a08b032e8c81b..bedccebb703719d3a0235491c3991a2948e1160f 100644 --- a/native_engine/native_safe_async_work.cpp +++ b/native_engine/native_safe_async_work.cpp @@ -104,7 +104,10 @@ NativeSafeAsyncWork::NativeSafeAsyncWork(NativeEngine* engine, #endif #if defined(ENABLE_EVENT_HANDLER) - runner_ = EventRunner::Current(); + std::shared_ptr runner = EventRunner::Current(); + if (runner != nullptr) { + eventHandler_ = std::make_shared(runner); + } #endif } @@ -398,8 +401,8 @@ napi_status NativeSafeAsyncWork::PostTask(void *data, int32_t priority, bool isT #if defined(ENABLE_EVENT_HANDLER) HILOG_DEBUG("NativeSafeAsyncWork::PostTask called"); std::unique_lock lock(eventHandlerMutex_); - if (runner_ == nullptr || engine_ == nullptr) { - HILOG_ERROR("post task failed due to nullptr engine or eventRunner"); + if (engine_ == nullptr || eventHandler_ == nullptr) { + HILOG_ERROR("post task failed due to nullptr engine or eventHandler"); return napi_status::napi_generic_failure; } // the task will be execute at main thread or worker thread @@ -414,9 +417,6 @@ napi_status NativeSafeAsyncWork::PostTask(void *data, int32_t priority, bool isT } }; - if (UNLIKELY(eventHandler_ == nullptr)) { - eventHandler_ = std::make_shared(runner_); - } bool res = false; if (isTail) { HILOG_DEBUG("The task is posted from tail"); @@ -436,10 +436,7 @@ napi_status NativeSafeAsyncWork::PostTask(void *data, int32_t priority, bool isT napi_status NativeSafeAsyncWork::SendEvent(const std::function &cb, napi_event_priority priority) { #ifdef ENABLE_EVENT_HANDLER - if (runner_) { - if (UNLIKELY(eventHandler_ == nullptr)) { - eventHandler_ = std::make_shared(runner_); - } + if (eventHandler_) { auto task = [eng = engine_, cb]() { auto vm = eng->GetEcmaVm(); panda::LocalScope scope(vm); diff --git a/native_engine/native_safe_async_work.h b/native_engine/native_safe_async_work.h index 046867eba48e68ebbc25b71b5c4dcb767344f999..0e4ad902644efe9c7bd85c063daff8c45249e253 100644 --- a/native_engine/native_safe_async_work.h +++ b/native_engine/native_safe_async_work.h @@ -29,7 +29,6 @@ #if defined(ENABLE_EVENT_HANDLER) namespace OHOS::AppExecFwk { - class EventRunner; class EventHandler; } #endif @@ -107,7 +106,6 @@ private: SafeAsyncStatus status_ = SafeAsyncStatus::UNKNOW; #if defined(ENABLE_EVENT_HANDLER) std::mutex eventHandlerMutex_; - std::shared_ptr runner_ = nullptr; std::shared_ptr eventHandler_ = nullptr; #endif