!12962 Clear NAPI reference

Merge pull request !12962 from wangyaohui/memleak_250226
This commit is contained in:
openharmony_ci
2025-03-18 04:09:22 +00:00
committed by Gitee
4 changed files with 21 additions and 1 deletions
@@ -228,8 +228,12 @@ napi_value JsPipController::OnUpdateContentNode(napi_env env, napi_callback_info
napi_delete_reference(env, typeNodeRef);
return;
}
napi_ref oldTypeNodeRef = pipController->GetTypeNode();
pipController->UpdateContentNodeRef(typeNodeRef);
napi_delete_reference(env, typeNodeRef);
if (oldTypeNodeRef != nullptr) {
napi_delete_reference(env, oldTypeNodeRef);
oldTypeNodeRef = nullptr;
}
task->Resolve(env, NapiGetUndefined(env));
};
if (napi_status::napi_ok != napi_send_event(env, asyncTask, napi_eprio_immediate)) {
+1
View File
@@ -29,6 +29,7 @@ class PipOption : virtual public RefBase {
public:
explicit PipOption();
virtual ~PipOption() = default;
void ClearNapiRefs(napi_env env);
void SetContext(void* contextPtr);
void SetNavigationId(const std::string& navigationId);
void SetPipTemplate(uint32_t templateType);
+3
View File
@@ -76,6 +76,9 @@ PictureInPictureController::PictureInPictureController(sptr<PipOption> pipOption
PictureInPictureController::~PictureInPictureController()
{
if (pipOption_) {
pipOption_->ClearNapiRefs(env_);
}
TLOGI(WmsLogTag::WMS_PIP, "Destruction");
if (!isAutoStartEnabled_) {
return;
+12
View File
@@ -22,6 +22,18 @@ PipOption::PipOption()
{
}
void PipOption::ClearNapiRefs(napi_env env)
{
if (customNodeController_) {
napi_delete_reference(env, customNodeController_);
customNodeController_ = nullptr;
}
if (typeNode_) {
napi_delete_reference(env, typeNode_);
typeNode_ = nullptr;
}
}
void PipOption::SetContext(void* contextPtr)
{
contextPtr_ = contextPtr;