internal View GetParent()
{
+ View ret;
IntPtr cPtr = NDalicPINVOKE.Actor_GetParent(swigCPtr);
- View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
+ BaseHandle basehandle = Registry.GetManagedBaseHandleFromNativePtr(cPtr);
+
+ if(basehandle is Layer)
+ {
+ ret = new View(cPtr,false);
+ }
+ else
+ {
+ ret = basehandle as View;
+ }
if (NDalicPINVOKE.SWIGPendingException.Pending)
throw NDalicPINVOKE.SWIGPendingException.Retrieve();
{
private global::System.Runtime.InteropServices.HandleRef swigCPtr;
protected bool swigCMemOwn;
+ private bool _registerMe;
internal BaseHandle(global::System.IntPtr cPtr, bool cMemoryOwn)
{
- swigCMemOwn = cMemoryOwn;
+ _registerMe = swigCMemOwn = cMemoryOwn;
swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
// using copy constructor to create another native handle so Registry.Unregister works fine.
swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, NDalicPINVOKE.new_BaseHandle__SWIG_2(swigCPtr));
- // Register this instance of BaseHandle in the registry.
- Registry.Register(this);
+ if (_registerMe)
+ {
+ // Register this instance of BaseHandle in the registry.
+ Registry.Register(this);
+ }
}
internal BaseHandle(global::System.IntPtr cPtr)
{
- swigCMemOwn = true;
+ _registerMe = swigCMemOwn = true;
swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
// Register this instance of BaseHandle in the registry.
//because the execution order of Finalizes is non-deterministic.
//Unreference this instance from Registry.
- Registry.Unregister(this);
+ if (_registerMe)
+ {
+ Registry.Unregister(this);
+ }
if (swigCPtr.Handle != global::System.IntPtr.Zero)
{
{
private global::System.Runtime.InteropServices.HandleRef swigCPtr;
private global::System.Runtime.InteropServices.HandleRef stageCPtr;
+ private Layer _rootLayer;
internal Window(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.Window_SWIGUpcast(cPtr), cMemoryOwn)
{
internal Layer GetRootLayer()
{
- Layer ret = new Layer(NDalicPINVOKE.Stage_GetRootLayer(stageCPtr), true);
+ if (_rootLayer == null)
+ _rootLayer = new Layer(NDalicPINVOKE.Stage_GetRootLayer(stageCPtr), true);
+
+
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- return ret;
+ return _rootLayer;
}
internal void SetBackgroundColor(Vector4 color)