X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2FTizen.NUI%2Fsrc%2Fpublic%2FTextureSet.cs;h=a92b909daaff6a5657d7d892aed5656617379a0c;hb=46b8a31f5c1c75a22b648ca394a4de8a50898513;hp=5cec963bd7e8cd10251f13800757c934cea19ca5;hpb=7eaff8ea1badc36943ba09a6eb4a67160ea96a24;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git diff --git a/src/Tizen.NUI/src/public/TextureSet.cs b/src/Tizen.NUI/src/public/TextureSet.cs index 5cec963..a92b909 100755 --- a/src/Tizen.NUI/src/public/TextureSet.cs +++ b/src/Tizen.NUI/src/public/TextureSet.cs @@ -15,70 +15,31 @@ * */ +using System.Runtime.InteropServices; + namespace Tizen.NUI { /// /// TextureSet is a handle to an object that specifies the set of images used as textures by a renderer.
/// The images have to be ordered in the same order they are declared in the shader. ///
+ /// 3 public class TextureSet : BaseHandle { private global::System.Runtime.InteropServices.HandleRef swigCPtr; - internal TextureSet(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.TextureSet_SWIGUpcast(cPtr), cMemoryOwn) - { - swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); - } - - internal static global::System.Runtime.InteropServices.HandleRef getCPtr(TextureSet obj) - { - return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; - } - - /// - /// Dispose. - /// - /// 3 - protected override void Dispose(DisposeTypes type) - { - if (disposed) - { - return; - } - - if (type == DisposeTypes.Explicit) - { - //Called by User - //Release your own managed resources here. - //You should release all of your own disposable objects here. - - } - - //Release your own unmanaged resources here. - //You should not access any managed member here except static instance. - //because the execution order of Finalizes is non-deterministic. - - if (swigCPtr.Handle != global::System.IntPtr.Zero) - { - if (swigCMemOwn) - { - swigCMemOwn = false; - NDalicPINVOKE.delete_TextureSet(swigCPtr); - } - swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); - } - - base.Dispose(type); - } - /// /// Create an instance of TextureSet. /// /// 3 - public TextureSet() : this(NDalicPINVOKE.TextureSet_New(), true) + public TextureSet() : this(Interop.TextureSet.TextureSet_New(), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + internal TextureSet(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.TextureSet.TextureSet_SWIGUpcast(cPtr), cMemoryOwn) + { + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); } /// @@ -89,7 +50,7 @@ namespace Tizen.NUI /// 3 public void SetTexture(uint index, Texture texture) { - NDalicPINVOKE.TextureSet_SetTexture(swigCPtr, index, Texture.getCPtr(texture)); + Interop.TextureSet.TextureSet_SetTexture(swigCPtr, index, Texture.getCPtr(texture)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } @@ -101,8 +62,18 @@ namespace Tizen.NUI /// 3 public Texture GetTexture(uint index) { - System.IntPtr cPtr = NDalicPINVOKE.TextureSet_GetTexture(swigCPtr, index); - Texture ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Texture; + //to fix memory leak issue, match the handle count with native side. + System.IntPtr cPtr = Interop.TextureSet.TextureSet_GetTexture(swigCPtr, index); + HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + Texture ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Texture; + if (cPtr != null && ret == null) + { + ret = new Texture(cPtr, false); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + Interop.BaseHandle.delete_BaseHandle(CPtr); + CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; @@ -116,7 +87,7 @@ namespace Tizen.NUI /// 3 public void SetSampler(uint index, Sampler sampler) { - NDalicPINVOKE.TextureSet_SetSampler(swigCPtr, index, Sampler.getCPtr(sampler)); + Interop.TextureSet.TextureSet_SetSampler(swigCPtr, index, Sampler.getCPtr(sampler)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } @@ -128,8 +99,12 @@ namespace Tizen.NUI /// 3 public Sampler GetSampler(uint index) { - System.IntPtr cPtr = NDalicPINVOKE.TextureSet_GetSampler(swigCPtr, index); - Sampler ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Sampler; + //to fix memory leak issue, match the handle count with native side. + System.IntPtr cPtr = Interop.TextureSet.TextureSet_GetSampler(swigCPtr, index); + HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); + Sampler ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Sampler; + Interop.BaseHandle.delete_BaseHandle(CPtr); + CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; @@ -142,11 +117,42 @@ namespace Tizen.NUI /// 3 public uint GetTextureCount() { - uint ret = NDalicPINVOKE.TextureSet_GetTextureCount(swigCPtr); + uint ret = Interop.TextureSet.TextureSet_GetTextureCount(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } - } + internal static global::System.Runtime.InteropServices.HandleRef getCPtr(TextureSet obj) + { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } + /// + /// Dispose. + /// + /// 3 + protected override void Dispose(DisposeTypes type) + { + if (disposed) + { + return; + } + + //Release your own unmanaged resources here. + //You should not access any managed member here except static instance. + //because the execution order of Finalizes is non-deterministic. + + if (swigCPtr.Handle != global::System.IntPtr.Zero) + { + if (swigCMemOwn) + { + swigCMemOwn = false; + Interop.TextureSet.delete_TextureSet(swigCPtr); + } + swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); + } + + base.Dispose(type); + } + } } \ No newline at end of file