From e4b926d67688406519eb9574432434e5edef03d6 Mon Sep 17 00:00:00 2001 From: chenyuchi Date: Tue, 12 Nov 2024 08:25:03 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcontext=E5=9C=A8=E8=A7=A3?= =?UTF-8?q?=E7=BB=91canvas=E5=90=8E=E4=BB=8D=E8=83=BD=E5=9C=A8=E8=AF=A5can?= =?UTF-8?q?vas=E4=B8=8A=E7=BB=98=E5=88=B6=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chenyuchi --- .../core/components_ng/pattern/canvas/canvas_pattern.cpp | 5 ----- .../core/components_ng/pattern/canvas/canvas_pattern.h | 1 - .../canvas/canvas_rendering_context_2d_model_ng.cpp | 3 +++ .../pattern/canvas/custom_paint_paint_method.cpp | 8 +------- .../pattern/canvas/rendering_context_2d_model.h | 8 +++++++- 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/frameworks/core/components_ng/pattern/canvas/canvas_pattern.cpp b/frameworks/core/components_ng/pattern/canvas/canvas_pattern.cpp index de7cda15399..7f3c0abebd7 100644 --- a/frameworks/core/components_ng/pattern/canvas/canvas_pattern.cpp +++ b/frameworks/core/components_ng/pattern/canvas/canvas_pattern.cpp @@ -38,11 +38,6 @@ void CanvasPattern::OnDetachFromFrameNode(FrameNode* frameNode) DetachRenderContext(); } -void CanvasPattern::OnDetachFromMainTree() -{ - DetachRenderContext(); -} - void CanvasPattern::AttachRenderContext() { isAttached_ = true; diff --git a/frameworks/core/components_ng/pattern/canvas/canvas_pattern.h b/frameworks/core/components_ng/pattern/canvas/canvas_pattern.h index fb0cbcf5754..1ab7a09570a 100644 --- a/frameworks/core/components_ng/pattern/canvas/canvas_pattern.h +++ b/frameworks/core/components_ng/pattern/canvas/canvas_pattern.h @@ -194,7 +194,6 @@ public: private: void OnAttachToFrameNode() override; void OnDetachFromFrameNode(FrameNode* frameNode) override; - void OnDetachFromMainTree() override; void FireOnContext2DAttach(); void FireOnContext2DDetach(); bool OnDirtyLayoutWrapperSwap(const RefPtr& dirty, const DirtySwapConfig& config) override; diff --git a/frameworks/core/components_ng/pattern/canvas/canvas_rendering_context_2d_model_ng.cpp b/frameworks/core/components_ng/pattern/canvas/canvas_rendering_context_2d_model_ng.cpp index b291b530784..46a68a75c8f 100644 --- a/frameworks/core/components_ng/pattern/canvas/canvas_rendering_context_2d_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/canvas/canvas_rendering_context_2d_model_ng.cpp @@ -60,6 +60,9 @@ void CanvasRenderingContext2DModelNG::OnDetachFromCanvas() if (onContext2DDetach_) { onContext2DDetach_(); } + if (apiVersion_ > static_cast(PlatformVersion::VERSION_FOURTEEN)) { + weakPattern_ = nullptr; + } } void CanvasRenderingContext2DModelNG::SetPattern(RefPtr newPattern) diff --git a/frameworks/core/components_ng/pattern/canvas/custom_paint_paint_method.cpp b/frameworks/core/components_ng/pattern/canvas/custom_paint_paint_method.cpp index 224053f5bc6..84e9f1a309f 100644 --- a/frameworks/core/components_ng/pattern/canvas/custom_paint_paint_method.cpp +++ b/frameworks/core/components_ng/pattern/canvas/custom_paint_paint_method.cpp @@ -121,13 +121,7 @@ const LinearMapNode&, std::shared_ptrGetApiTargetVersion(); - } else { - // %1000 because the API version is the last three digits of the APP version - apiVersion_ = AceApplicationInfo::GetInstance().GetApiTargetVersion() % 1000; - } + apiVersion_ = Container::GetCurrentApiTargetVersion(); } bool CustomPaintPaintMethod::CheckFilterProperty(FilterType filterType, const std::string& filterParam) diff --git a/frameworks/core/components_ng/pattern/canvas/rendering_context_2d_model.h b/frameworks/core/components_ng/pattern/canvas/rendering_context_2d_model.h index 8a270c7af1e..1dcf2d35e8b 100644 --- a/frameworks/core/components_ng/pattern/canvas/rendering_context_2d_model.h +++ b/frameworks/core/components_ng/pattern/canvas/rendering_context_2d_model.h @@ -20,6 +20,7 @@ #include "base/geometry/dimension.h" #include "base/memory/ace_type.h" +#include "core/common/container.h" #include "core/components/common/layout/constants.h" #include "core/components_ng/pattern/canvas/canvas_renderer_type.h" #include @@ -29,7 +30,10 @@ class RenderingContext2DModel : public AceType { DECLARE_ACE_TYPE(RenderingContext2DModel, AceType) public: - RenderingContext2DModel() = default; + RenderingContext2DModel() + { + apiVersion_ = Container::GetCurrentApiTargetVersion(); + } virtual ~RenderingContext2DModel() = default; virtual void SetPattern(RefPtr pattern) = 0; @@ -131,6 +135,8 @@ public: pattern->SetTranslateY(transform.translateY); } +protected: + int32_t apiVersion_ = 0; ACE_DISALLOW_COPY_AND_MOVE(RenderingContext2DModel); };