From 40f895b0e3f72e8c7bbdb529599f5c152f25124e Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Tue, 17 Oct 2023 15:24:58 +0900 Subject: [PATCH] [NUI] Resolve registry issue for RenderTaskList After patch #5595 merged, there was some hidden bugs occured. This PR is one of portential bug fix. Signed-off-by: Eunki, Hong --- src/Tizen.NUI/src/internal/Common/RenderTaskList.cs | 16 +++++++++++++++- src/Tizen.NUI/src/public/Window/Window.cs | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/Tizen.NUI/src/internal/Common/RenderTaskList.cs b/src/Tizen.NUI/src/internal/Common/RenderTaskList.cs index 987e840..f47c59a 100755 --- a/src/Tizen.NUI/src/internal/Common/RenderTaskList.cs +++ b/src/Tizen.NUI/src/internal/Common/RenderTaskList.cs @@ -17,6 +17,7 @@ using System; using System.ComponentModel; +using System.Runtime.InteropServices; namespace Tizen.NUI { @@ -95,7 +96,20 @@ namespace Tizen.NUI [EditorBrowsable(EditorBrowsableState.Never)] public RenderTask GetTask(uint index) { - RenderTask ret = new RenderTask(Interop.RenderTask.RenderTaskListGetTask(SwigCPtr, index), true); + global::System.IntPtr cPtr = Interop.RenderTask.RenderTaskListGetTask(SwigCPtr, index); + + RenderTask ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as RenderTask; + if (ret != null) + { + HandleRef CPtr = new HandleRef(this, cPtr); + Interop.BaseHandle.DeleteBaseHandle(CPtr); + CPtr = new HandleRef(null, global::System.IntPtr.Zero); + } + else + { + ret = new RenderTask(cPtr, true); + } + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } diff --git a/src/Tizen.NUI/src/public/Window/Window.cs b/src/Tizen.NUI/src/public/Window/Window.cs index 36d6000..12eff27 100755 --- a/src/Tizen.NUI/src/public/Window/Window.cs +++ b/src/Tizen.NUI/src/public/Window/Window.cs @@ -1554,7 +1554,20 @@ namespace Tizen.NUI [EditorBrowsable(EditorBrowsableState.Never)] public RenderTaskList GetRenderTaskList() { - RenderTaskList ret = new RenderTaskList(Interop.Stage.GetRenderTaskList(stageCPtr), true); + global::System.IntPtr cPtr = Interop.Stage.GetRenderTaskList(stageCPtr); + + RenderTaskList ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as RenderTaskList; + if (ret != null) + { + HandleRef CPtr = new HandleRef(this, cPtr); + Interop.BaseHandle.DeleteBaseHandle(CPtr); + CPtr = new HandleRef(null, global::System.IntPtr.Zero); + } + else + { + ret = new RenderTaskList(cPtr, true); + } + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } -- 2.7.4