From: Eunki, Hong Date: Tue, 17 Oct 2023 06:24:58 +0000 (+0900) Subject: [NUI] Resolve registry issue for RenderTaskList X-Git-Tag: accepted/tizen/unified/20231205.024657~78 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=40f895b0e3f72e8c7bbdb529599f5c152f25124e;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [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 --- 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; }