public Texture GetColorTexture()
{
+ //to fix memory leak issue, match the handle count with native side.
global::System.IntPtr cPtr = NDalicPINVOKE.FrameBuffer_GetColorTexture(swigCPtr);
- Texture ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Texture;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ Texture ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Texture;
+ NDalicPINVOKE.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;
public VisualBase GetVisual(int index)
{
+ //to fix memory leak issue, match the handle count with native side.
System.IntPtr cPtr = NDalicManualPINVOKE.ViewWrapperImpl_GetVisual(swigCPtr, index);
- VisualBase ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as VisualBase;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ VisualBase ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as VisualBase;
+ NDalicPINVOKE.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;
}
- this?.Clear();
+ if (this != null)
+ {
+ this.Clear();
+ }
//Release your own unmanaged resources here.
//You should not access any managed member here except static instance.
/// <since_tizen> 3 </since_tizen>
public View GetChildAt(TableView.CellPosition position)
{
+ //to fix memory leak issue, match the handle count with native side.
IntPtr cPtr = NDalicPINVOKE.TableView_GetChildAt(swigCPtr, TableView.CellPosition.getCPtr(position));
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
+ NDalicPINVOKE.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;
/// <since_tizen> 3 </since_tizen>
public View RemoveChildAt(TableView.CellPosition position)
{
+ //to fix memory leak issue, match the handle count with native side.
IntPtr cPtr = NDalicPINVOKE.TableView_RemoveChildAt(swigCPtr, TableView.CellPosition.getCPtr(position));
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
+ NDalicPINVOKE.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;
else
{
ret = basehandle as View;
- NDalicPINVOKE.delete_BaseHandle(CPtr);
- CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
}
+ NDalicPINVOKE.delete_BaseHandle(CPtr);
+ CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
/// <since_tizen> 3 </since_tizen>
public View GetCurrentFocusView()
{
+ //to fix memory leak issue, match the handle count with native side.
IntPtr cPtr = NDalicManualPINVOKE.FocusManager_GetCurrentFocusActor(swigCPtr);
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
+ NDalicPINVOKE.delete_BaseHandle(CPtr);
+ CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
return ret;
}
/// <since_tizen> 3 </since_tizen>
public View GetFocusGroup(View view)
{
+ //to fix memory leak issue, match the handle count with native side.
IntPtr cPtr = NDalicManualPINVOKE.FocusManager_GetFocusGroup(swigCPtr, View.getCPtr(view));
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
+ NDalicPINVOKE.delete_BaseHandle(CPtr);
+ CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
return ret;
}
internal View GetFocusIndicatorView()
{
+ //to fix memory leak issue, match the handle count with native side.
IntPtr cPtr = NDalicManualPINVOKE.FocusManager_GetFocusIndicatorActor(swigCPtr);
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
+ NDalicPINVOKE.delete_BaseHandle(CPtr);
+ CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
return ret;
}
public static readonly int FrameDelay = NDalic.IMAGE_VISUAL_FRAME_DELAY;
/// <summary>
/// The number of times the AnimatedImageVisual will be looped
- /// Default -1. if < 0, loop unlimited. else, loop loopCount times.
+ /// Default -1. if < 0, loop unlimited. else, loop loopCount times.
/// </summary>
/// <since_tizen> 4 </since_tizen>
public static readonly int LoopCount = NDalic.IMAGE_VISUAL_LOOP_COUNT;
/// <since_tizen> 3 </since_tizen>
public Geometry GetGeometry()
{
+ //to fix memory leak issue, match the handle count with native side.
System.IntPtr cPtr = NDalicPINVOKE.Renderer_GetGeometry(swigCPtr);
- Geometry ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Geometry;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ Geometry ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Geometry;
+ NDalicPINVOKE.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;
/// <since_tizen> 3 </since_tizen>
public TextureSet GetTextures()
{
+ //to fix memory leak issue, match the handle count with native side.
System.IntPtr cPtr = NDalicPINVOKE.Renderer_GetTextures(swigCPtr);
- TextureSet ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as TextureSet;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ TextureSet ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as TextureSet;
+ NDalicPINVOKE.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;
/// <since_tizen> 3 </since_tizen>
public Shader GetShader()
{
+ //to fix memory leak issue, match the handle count with native side.
System.IntPtr cPtr = NDalicPINVOKE.Renderer_GetShader(swigCPtr);
- Shader ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Shader;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ Shader ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Shader;
+ NDalicPINVOKE.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;
/// <since_tizen> 3 </since_tizen>
public Texture GetTexture(uint index)
{
+ //to fix memory leak issue, match the handle count with native side.
System.IntPtr cPtr = NDalicPINVOKE.TextureSet_GetTexture(swigCPtr, index);
- Texture ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Texture;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ Texture ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Texture;
+ NDalicPINVOKE.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;
/// <since_tizen> 3 </since_tizen>
public Sampler GetSampler(uint index)
{
+ //to fix memory leak issue, match the handle count with native side.
System.IntPtr cPtr = NDalicPINVOKE.TextureSet_GetSampler(swigCPtr, index);
- Sampler ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Sampler;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ Sampler ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Sampler;
+ NDalicPINVOKE.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;
/// <since_tizen> 3 </since_tizen>
public View GetHitView(uint point)
{
+ //to fix memory leak issue, match the handle count with native side.
global::System.IntPtr cPtr = NDalicPINVOKE.Touch_GetHitActor(swigCPtr, point);
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
+ NDalicPINVOKE.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;
internal View GetTitle()
{
+ //to fix memory leak issue, match the handle count with native side.
IntPtr cPtr = NDalicPINVOKE.Popup_GetTitle(swigCPtr);
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
+ NDalicPINVOKE.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;
internal View GetContent()
{
+ //to fix memory leak issue, match the handle count with native side.
IntPtr cPtr = NDalicPINVOKE.Popup_GetContent(swigCPtr);
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
+ NDalicPINVOKE.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;
internal View GetFooter()
{
+ //to fix memory leak issue, match the handle count with native side.
IntPtr cPtr = NDalicPINVOKE.Popup_GetFooter(swigCPtr);
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+ View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
+ NDalicPINVOKE.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;
/// <summary>
/// Gets and Sets the number of times the AnimatedImageVisual will be looped.
- /// Default -1. if < 0, loop unlimited. else, loop loopCount times.
+ /// Default -1. if < 0, loop unlimited. else, loop loopCount times.
/// </summary>
/// <since_tizen> 4 </since_tizen>
public float LoopCount
--- /dev/null
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.UIComponents;
+
+namespace RefCountMemoryLeakTest2
+{
+ class Program : NUIApplication
+ {
+ const string X = "NUI1";
+ protected override void OnCreate()
+ {
+ base.OnCreate();
+ Initialize();
+ }
+
+ View parent1, child1, child2;
+
+ void Initialize()
+ {
+ Window.Instance.KeyEvent += OnKeyEvent;
+ Window.Instance.BackgroundColor = Color.Green;
+ }
+
+ public void OnKeyEvent(object sender, Window.KeyEventArgs e)
+ {
+ if (e.Key.State == Key.StateType.Down && (e.Key.KeyPressedName == "XF86Back" || e.Key.KeyPressedName == "Escape"))
+ {
+ Exit();
+ }
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "Return")
+ {
+ }
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "Left")
+ {
+ }
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "Up")
+ {
+ }
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "Right")
+ {
+ }
+ ////////////////////////////////////////////////////////////////////////
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "1")
+ {
+ Tizen.Log.Fatal(X, $"########## 1 pressed! ################");
+ Tizen.Log.Fatal(X, $"View.Parent property test!");
+ Tizen.Log.Fatal(X, $"parent is a View and child is View");
+ Tizen.Log.Fatal(X, $"####################################");
+
+ Layer layer = Window.Instance.GetDefaultLayer();
+ parent1 = new View();
+ parent1.BackgroundColor = Color.Blue;
+ parent1.Size2D = new Size2D(200, 200);
+ layer.Add(parent1);
+
+ View child = new View();
+ child.BackgroundColor = Color.Blue;
+ child.Size2D = new Size2D(200, 200);
+ parent1.Add(child);
+
+ Tizen.Log.Fatal(X, $"[Before test] layer(DefaultLayer) refcnt={layer?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[Before test] parent1 id={parent1.ID} refcnt={parent1?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[Before test] child id={child.ID} refcnt={child?.GetObjectPtr()?.ReferenceCount()}");
+
+ View parent = child.Parent;
+
+ Tizen.Log.Fatal(X, $"[After test] layer(DefaultLayer) refcnt={layer?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[After test] parent id={parent.ID} refcnt={parent?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[After test] child id={child.ID} refcnt={child?.GetObjectPtr()?.ReferenceCount()}");
+
+ Tizen.Log.Fatal(X, $"############### END! #####################");
+ }
+ ////////////////////////////////////////////////////////////////////////
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "2")
+ {
+ Tizen.Log.Fatal(X, $"########## 2 pressed! ################");
+ Tizen.Log.Fatal(X, $"View.Parent property test!");
+ Tizen.Log.Fatal(X, $"parent is DefaultLayer and child is View");
+ Tizen.Log.Fatal(X, $"####################################");
+
+ Layer layer = Window.Instance.GetDefaultLayer();
+ View child = new View();
+ child.BackgroundColor = Color.Blue;
+ child.Size2D = new Size2D(200, 200);
+ layer.Add(child);
+
+ Tizen.Log.Fatal(X, $"[Before test] layer(DefaultLayer) refcnt={layer?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[Before test] child id={child.ID} refcnt={child?.GetObjectPtr()?.ReferenceCount()}");
+
+ View parent = child.Parent;
+
+ Tizen.Log.Fatal(X, $"[After test] parent(DefaultLayer) refcnt={parent?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[After test] child id={child.ID} refcnt={child?.GetObjectPtr()?.ReferenceCount()}");
+
+ Tizen.Log.Fatal(X, $"############### END! #####################");
+ }
+ ////////////////////////////////////////////////////////////////////////
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "3")
+ {
+ Tizen.Log.Fatal(X, $"########## 3 pressed! ################");
+ Tizen.Log.Fatal(X, $"View.GetParent() test!");
+ Tizen.Log.Fatal(X, $"parent is DefaultLayer and child is View");
+ Tizen.Log.Fatal(X, $"####################################");
+
+ Layer layer = Window.Instance.GetDefaultLayer();
+ View child = new View();
+ child.BackgroundColor = Color.Blue;
+ child.Size2D = new Size2D(200, 200);
+ layer.Add(child);
+
+ Tizen.Log.Fatal(X, $"[Before test] layer(DefaultLayer) refcnt={layer?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[Before test] child id={child.ID} refcnt={child?.GetObjectPtr()?.ReferenceCount()}");
+
+ Layer parent = child.GetParent() as Layer;
+
+ Tizen.Log.Fatal(X, $"[After test] parent(DefaultLayer) refcnt={parent?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[After test] child id={child.ID} refcnt={child?.GetObjectPtr()?.ReferenceCount()}");
+
+ Tizen.Log.Fatal(X, $"############### END! #####################");
+ }
+ ////////////////////////////////////////////////////////////////////////
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "4")
+ {
+ Tizen.Log.Fatal(X, $"########## 4 pressed! ################");
+ Tizen.Log.Fatal(X, $"FocusManager.GetCurrentFocusView() test!");
+ Tizen.Log.Fatal(X, $"parent1 is a View and there are 2 children");
+ Tizen.Log.Fatal(X, $"####################################");
+
+ Layer layer = Window.Instance.GetDefaultLayer();
+ parent1 = new View();
+ parent1.BackgroundColor = Color.Yellow;
+ parent1.Size2D = new Size2D(500, 500);
+ parent1.Position2D = new Position2D(100, 100);
+ layer.Add(parent1);
+
+ child1 = new View();
+ child1.BackgroundColor = Color.Red;
+ child1.Size2D = new Size2D(100, 100);
+ child1.Position2D = new Position2D(150, 150);
+ child1.Focusable = true;
+ parent1.Add(child1);
+
+ child2 = new View();
+ child2.BackgroundColor = Color.Red;
+ child2.Size2D = new Size2D(100, 100);
+ child2.Position2D = new Position2D(300, 150);
+ child2.Focusable = true;
+ parent1.Add(child2);
+
+ child1.RightFocusableView = child2;
+ child2.LeftFocusableView = child1;
+
+ Tizen.Log.Fatal(X, $"[Before test] child1 id={child1.ID} refcnt={child1?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[Before test] child2 id={child2.ID} refcnt={child2?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[Before test] parent1 id={parent1.ID} refcnt={parent1?.GetObjectPtr()?.ReferenceCount()}");
+
+ FocusManager.Instance.SetCurrentFocusView(child1);
+
+ Tizen.Log.Fatal(X, $"please push Right, Left key on remocon");
+ Tizen.Log.Fatal(X, $"and check the values with 8 key!");
+
+ View currentFocused = FocusManager.Instance.GetCurrentFocusView();
+ Tizen.Log.Fatal(X, $"[After test] currentFocused id={currentFocused.ID} refcnt={currentFocused?.GetObjectPtr()?.ReferenceCount()}");
+ }
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "5")
+ {
+ Tizen.Log.Fatal(X, $"########## 5 pressed! ################");
+ Tizen.Log.Fatal(X, $"FocusManager.GetCurrentFocusView() test!");
+ Tizen.Log.Fatal(X, $"this is After test!!!");
+ Tizen.Log.Fatal(X, $"####################################");
+
+ View currentFocused = FocusManager.Instance.GetCurrentFocusView();
+ Tizen.Log.Fatal(X, $"[After test] currentFocused id={currentFocused.ID} refcnt={currentFocused?.GetObjectPtr()?.ReferenceCount()}");
+ Tizen.Log.Fatal(X, $"[After test] parent1 id={parent1.ID} refcnt={parent1?.GetObjectPtr()?.ReferenceCount()}");
+ }
+ ////////////////////////////////////////////////////////////////////////
+ else if (e.Key.State == Key.StateType.Down && e.Key.KeyPressedName == "6")
+ {
+ Tizen.Log.Fatal(X, $"########## 6 pressed! ################");
+ Tizen.Log.Fatal(X, $"Parent TCT crash test! should not be crashed");
+ Tizen.Log.Fatal(X, $"####################################");
+
+ /* TEST CODE */
+ View view = new View();
+ View leftView = new View();
+ Window.Instance.GetDefaultLayer().Add(view);
+ Window.Instance.GetDefaultLayer().Add(leftView);
+ view.LeftFocusableView = leftView;
+ if(leftView == view.LeftFocusableView)
+ {
+ Tizen.Log.Fatal(X, $"view and LeftView is same => good!");
+ }
+ else
+ {
+ Tizen.Log.Fatal(X, $"view and LeftView is different => NG!");
+ }
+ }
+
+
+ }
+
+ static void _Main(string[] args)
+ {
+ var app = new Program();
+ app.Run(args);
+ }
+ }
+}
+