X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2FTizen.NUI%2Fsrc%2Fpublic%2FTextureSet.cs;h=a92b909daaff6a5657d7d892aed5656617379a0c;hb=46b8a31f5c1c75a22b648ca394a4de8a50898513;hp=cbb0394ab901f023b24795274f59f9de8b9af4b9;hpb=c76fa83eaddab0667ba389a0f3c0fe7b2f30e8a9;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 cbb0394..a92b909 100755
--- a/src/Tizen.NUI/src/public/TextureSet.cs
+++ b/src/Tizen.NUI/src/public/TextureSet.cs
@@ -1,112 +1,158 @@
-/** Copyright (c) 2017 Samsung Electronics Co., Ltd.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-*/
+/*
+ * Copyright(c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+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)
+ ///
+ /// Create an instance of TextureSet.
+ ///
+ /// 3
+ public TextureSet() : this(Interop.TextureSet.TextureSet_New(), true)
{
- 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;
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
- protected override void Dispose(DisposeTypes type)
+ internal TextureSet(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.TextureSet.TextureSet_SWIGUpcast(cPtr), cMemoryOwn)
{
- 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);
- }
-
-
- public TextureSet() : this(NDalicPINVOKE.TextureSet_New(), true)
- {
- if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-
+ swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
}
+ ///
+ /// Sets the texture at position "index".
+ ///
+ /// The position in the texture set of the texture.
+ /// The texture.
+ /// 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();
}
+ ///
+ /// Gets the image at position "index".
+ ///
+ /// The position in the texture set of the image.
+ /// A handle to the image at the the specified position.
+ /// 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;
}
+ ///
+ /// Sets the sampler to be used by the image at position "index".
+ ///
+ /// The position in the texture set of the image.
+ /// The sampler to use.
+ /// 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();
}
+ ///
+ /// Sets the sampler to be used by the image at position "index".
+ ///
+ /// The position in the texture set of the image.
+ /// A handle to the sampler at the specified position.
+ /// 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;
}
+ ///
+ /// Gets the number of textures present in the TextureSet.
+ ///
+ /// The number of textures in the TextureSet.
+ /// 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