From fd58128129317682c1f75caa21b8f384a2d48530 Mon Sep 17 00:00:00 2001 From: Kirill Kirichenko Date: Tue, 27 May 2025 16:10:08 +0300 Subject: [PATCH] Fix VMContext owner node Signed-off-by: Kirill Kirichenko Change-Id: I6a694c9aa5052fbf4af759a36b16f059a5e1c8b8 --- .../core/interfaces/native/common/api_impl.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/frameworks/core/interfaces/native/common/api_impl.cpp b/frameworks/core/interfaces/native/common/api_impl.cpp index c4717ebb574..7a570f9dbb6 100644 --- a/frameworks/core/interfaces/native/common/api_impl.cpp +++ b/frameworks/core/interfaces/native/common/api_impl.cpp @@ -343,6 +343,18 @@ void* GetAttachNodePtr(Ark_NodeHandle nodePtr) return frameNode->GetExternalData(); } +static void SetVMContext(Ark_VMContext vmContext) { + auto pipeline = PipelineContext::GetCurrentContextSafely(); + CHECK_NULL_VOID(pipeline); + auto rootNode = pipeline->GetRootElement(); + CHECK_NULL_VOID(rootNode); + auto rootPtr = reinterpret_cast(Referenced::RawPtr(rootNode)); + CHECK_NULL_VOID(rootPtr); + auto companionNode = GeneratedApiImpl::GetCompanion(rootPtr); + CHECK_NULL_VOID(companionNode); + companionNode->SetVMContext(vmContext); +} + Ark_Int32 MeasureLayoutAndDraw(Ark_VMContext vmContext, Ark_NodeHandle rootPtr) { auto* root = reinterpret_cast(rootPtr); @@ -365,9 +377,7 @@ Ark_Int32 MeasureLayoutAndDraw(Ark_VMContext vmContext, Ark_NodeHandle rootPtr) Ark_Float32 drawData[] = { 0, 0, 0, 0 }; DrawNode(vmContext, stagePtr, &drawData[0]); - if (auto companionNode = GetCompanion(stagePtr); companionNode) { - companionNode->SetVMContext(vmContext); - } + SetVMContext(vmContext); return 0; } -- Gitee