From 2dad3aaa776aca53f3ed5577ea1be82687af38d7 Mon Sep 17 00:00:00 2001 From: fenglinbailu Date: Mon, 28 Oct 2024 21:52:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=B8=E9=87=8F=E6=8F=90=E5=8F=96=EF=BC=8Cun?= =?UTF-8?q?register=E5=9C=A8=E5=88=A4=E7=A9=BAreturn=E5=89=8D=E8=A7=A6?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: fenglinbailu --- .../render/adapter/rosen_render_context.cpp | 10 +++++----- .../render/adapter/rosen_render_context.h | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/frameworks/core/components_ng/render/adapter/rosen_render_context.cpp b/frameworks/core/components_ng/render/adapter/rosen_render_context.cpp index 9f1f47c16f4..958216946ec 100644 --- a/frameworks/core/components_ng/render/adapter/rosen_render_context.cpp +++ b/frameworks/core/components_ng/render/adapter/rosen_render_context.cpp @@ -260,6 +260,10 @@ RosenRenderContext::~RosenRenderContext() void RosenRenderContext::DetachModifiers() { + auto pipeline = PipelineContext::GetCurrentContextPtrSafelyWithCheck(); + if (pipeline && densityChangedCallbackId_ != DEFAULT_CALLBACK_ID) { + pipeline->UnregisterDensityChangedCallback(densityChangedCallbackId_); + } CHECK_NULL_VOID(rsNode_ && rsNode_->GetType() == Rosen::RSUINodeType::SURFACE_NODE); if (transitionEffect_) { transitionEffect_->Detach(this); @@ -273,11 +277,7 @@ void RosenRenderContext::DetachModifiers() if (scaleXYUserModifier_) { rsNode_->RemoveModifier(scaleXYUserModifier_); } - auto pipeline = PipelineContext::GetCurrentContextPtrSafelyWithCheck(); if (pipeline) { - if (densityChangedCallbackId_ != -1) { - pipeline->UnregisterDensityChangedCallback(densityChangedCallbackId_); - } pipeline->RequestFrame(); } } @@ -2378,7 +2378,7 @@ void RosenRenderContext::SetBorderRadius(const BorderRadiusProperty& value) void RosenRenderContext::OnBorderRadiusUpdate(const BorderRadiusProperty& value) { - if (densityChangedCallbackId_ == -1) { + if (densityChangedCallbackId_ == DEFAULT_CALLBACK_ID) { auto context = GetPipelineContext(); CHECK_NULL_VOID(context); densityChangedCallbackId_ = context->RegisterDensityChangedCallback( diff --git a/frameworks/core/components_ng/render/adapter/rosen_render_context.h b/frameworks/core/components_ng/render/adapter/rosen_render_context.h index 4390f7b2e48..1749d63bd0b 100755 --- a/frameworks/core/components_ng/render/adapter/rosen_render_context.h +++ b/frameworks/core/components_ng/render/adapter/rosen_render_context.h @@ -663,7 +663,8 @@ protected: int appearingTransitionCount_ = 0; int disappearingTransitionCount_ = 0; int sandBoxCount_ = 0; - int32_t densityChangedCallbackId_ = -1; + int32_t densityChangedCallbackId_ = DEFAULT_CALLBACK_ID; + static constexpr int32_t DEFAULT_CALLBACK_ID = -1; static constexpr int32_t INVALID_PARENT_ID = -2100000; static constexpr uint32_t DRAW_REGION_RECT_COUNT = 7; std::map> particleImageContextMap_; -- Gitee