Modify dispose issue for window
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / Window.cs
old mode 100644 (file)
new mode 100755 (executable)
index b346132..9bd4af2
 
 extern alias TizenSystemInformation;
 using TizenSystemInformation.Tizen.System;
-using System;
+using global::System;
 using System.ComponentModel;
 using System.Collections.Generic;
-using System.Runtime.InteropServices;
+using global::System.Runtime.InteropServices;
 using Tizen.NUI.BaseComponents;
 
 namespace Tizen.NUI
@@ -46,17 +46,17 @@ namespace Tizen.NUI
             return isSupported;
         }
 
-        internal Window(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.Window.Window_SWIGUpcast(cPtr), cMemoryOwn)
+        internal Window(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.Window.Upcast(cPtr), cMemoryOwn)
         {
-            if (Interop.Stage.Stage_IsInstalled())
+            if (Interop.Stage.IsInstalled())
             {
-                stageCPtr = new global::System.Runtime.InteropServices.HandleRef(this, Interop.Stage.Stage_GetCurrent());
+                stageCPtr = new global::System.Runtime.InteropServices.HandleRef(this, Interop.Stage.GetCurrent());
 
                 localController = new LayoutController(this);
-                NUILog.Debug("layoutController id:" + localController.GetId() );
+                NUILog.Debug("layoutController id:" + localController.GetId());
             }
         }
-               
+
         /// <summary>
         /// Creates a new Window.<br />
         /// This creates an extra window in addition to the default main window<br />
@@ -67,9 +67,9 @@ namespace Tizen.NUI
         /// <since_tizen> 6 </since_tizen>
         /// <feature> http://tizen.org/feature/opengles.surfaceless_context </feature>
         /// <exception cref="NotSupportedException">The required feature is not supported.</exception>
-        public Window(Rectangle windowPosition = null , bool isTranslucent = false) : this(Interop.Window.Window_New__SWIG_0(Rectangle.getCPtr(windowPosition), "", isTranslucent), true)
+        public Window(Rectangle windowPosition = null, bool isTranslucent = false) : this(Interop.Window.New(Rectangle.getCPtr(windowPosition), "", isTranslucent), true)
         {
-            if( IsSupportedMultiWindow() == false )
+            if (IsSupportedMultiWindow() == false)
             {
                 NUILog.Error("This device does not support surfaceless_context. So Window cannot be created. ");
             }
@@ -87,7 +87,7 @@ namespace Tizen.NUI
         /// <since_tizen> 6 </since_tizen>
         /// <feature> http://tizen.org/feature/opengles.surfaceless_context </feature>
         /// <exception cref="NotSupportedException">The required feature is not supported.</exception>
-        public Window(string name, Rectangle windowPosition = null, bool isTranslucent = false) : this(Interop.Window.Window_New__SWIG_0(Rectangle.getCPtr(windowPosition), name, isTranslucent), true)
+        public Window(string name, Rectangle windowPosition = null, bool isTranslucent = false) : this(Interop.Window.New(Rectangle.getCPtr(windowPosition), name, isTranslucent), true)
         {
             if (IsSupportedMultiWindow() == false)
             {
@@ -159,12 +159,39 @@ namespace Tizen.NUI
         /// <summary>
         /// Enumeration for transition effect's state.
         /// </summary>
+        [Obsolete("Please do not use! This will be removed. Please use Window.EffectState instead!")]
         [EditorBrowsable(EditorBrowsableState.Never)]
         public enum EffectStates
         {
             /// <summary>
             /// None state.
             /// </summary>
+            [Obsolete("Please do not use! This will be removed. Please use Window.EffectState.None instead!")]
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            None = 0,
+            /// <summary>
+            /// Transition effect is started.
+            /// </summary>
+            [Obsolete("Please do not use! This will be removed. Please use Window.EffectState.Start instead!")]
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            Start,
+            /// <summary>
+            /// Transition effect is ended.
+            /// </summary>
+            [Obsolete("Please do not use! This will be removed. Please use Window.EffectState.End instead!")]
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            End,
+        }
+
+        /// <summary>
+        /// Enumeration for transition effect's state.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public enum EffectState
+        {
+            /// <summary>
+            /// None state.
+            /// </summary>
             [EditorBrowsable(EditorBrowsableState.Never)]
             None = 0,
             /// <summary>
@@ -182,12 +209,39 @@ namespace Tizen.NUI
         /// <summary>
         /// Enumeration for transition effect's type.
         /// </summary>
+        [Obsolete("Please do not use! This will be removed. Please use Window.EffectType instead!")]
         [EditorBrowsable(EditorBrowsableState.Never)]
         public enum EffectTypes
         {
             /// <summary>
             /// None type.
             /// </summary>
+            [Obsolete("Please do not use! This will be removed. Please use Window.EffectType.None instead!")]
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            None = 0,
+            /// <summary>
+            /// Window show effect.
+            /// </summary>
+            [Obsolete("Please do not use! This will be removed. Please use Window.EffectType.Show instead!")]
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            Show,
+            /// <summary>
+            /// Window hide effect.
+            /// </summary>
+            [Obsolete("Please do not use! This will be removed. Please use Window.EffectType.Hide instead!")]
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            Hide,
+        }
+
+        /// <summary>
+        /// Enumeration for transition effect's type.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public enum EffectType
+        {
+            /// <summary>
+            /// None type.
+            /// </summary>
             [EditorBrowsable(EditorBrowsableState.Never)]
             None = 0,
             /// <summary>
@@ -223,13 +277,13 @@ namespace Tizen.NUI
         {
             get
             {
-                WindowType ret = (WindowType)Interop.Window.GetType(swigCPtr);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                WindowType ret = (WindowType)Interop.Window.GetType(SwigCPtr);
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw new InvalidOperationException("FATAL: get Exception", NDalicPINVOKE.SWIGPendingException.Retrieve());
                 return ret;
             }
             set
             {
-                Interop.Window.SetType(swigCPtr, (int)value);
+                Interop.Window.SetType(SwigCPtr, (int)value);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             }
         }
@@ -326,6 +380,7 @@ namespace Tizen.NUI
         /// <summary>
         /// Gets or sets a size of the window.
         /// </summary>
+        /// <exception cref="ArgumentNullException"> Thrown when value is null. </exception>
         /// <since_tizen> 4 </since_tizen>
         public Size2D WindowSize
         {
@@ -342,6 +397,7 @@ namespace Tizen.NUI
         /// <summary>
         /// Gets or sets a position of the window.
         /// </summary>
+        /// <exception cref="ArgumentNullException"> Thrown when value is null. </exception>
         /// <since_tizen> 4 </since_tizen>
         public Position2D WindowPosition
         {
@@ -367,6 +423,7 @@ namespace Tizen.NUI
                 Position2D position = GetPosition();
                 Size2D size = GetSize();
                 Rectangle ret = new Rectangle(position.X, position.Y, size.Width, size.Height);
+                position.Dispose();
                 return ret;
             }
             set
@@ -379,7 +436,7 @@ namespace Tizen.NUI
         {
             get
             {
-                global::System.IntPtr cPtr = Interop.Stage.Stage_DEFAULT_BACKGROUND_COLOR_get();
+                global::System.IntPtr cPtr = Interop.Stage.DefaultBackgroundColorGet();
                 Vector4 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector4(cPtr, false);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
                 return ret;
@@ -390,7 +447,7 @@ namespace Tizen.NUI
         {
             get
             {
-                global::System.IntPtr cPtr = Interop.Stage.Stage_DEBUG_BACKGROUND_COLOR_get();
+                global::System.IntPtr cPtr = Interop.Stage.DebugBackgroundColorGet();
                 Vector4 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector4(cPtr, false);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
                 return ret;
@@ -424,7 +481,7 @@ namespace Tizen.NUI
         [Obsolete("Please do not use! This will be deprecated! Please use FeedKey(Key keyEvent) instead!")]
         public static void FeedKeyEvent(Key keyEvent)
         {
-            Interop.Window.Window_FeedKeyEvent(Key.getCPtr(keyEvent));
+            Interop.Window.FeedKeyEvent(Key.getCPtr(keyEvent));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -435,7 +492,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void SetAcceptFocus(bool accept)
         {
-            Interop.Window.SetAcceptFocus(swigCPtr, accept);
+            Interop.Window.SetAcceptFocus(SwigCPtr, accept);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -446,7 +503,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool IsFocusAcceptable()
         {
-            bool ret = Interop.Window.IsFocusAcceptable(swigCPtr);
+            bool ret = Interop.Window.IsFocusAcceptable(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
             return ret;
@@ -458,7 +515,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void Show()
         {
-            Interop.Window.Show(swigCPtr);
+            Interop.Window.Show(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -468,7 +525,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void Hide()
         {
-            Interop.Window.Hide(swigCPtr);
+            Interop.Window.Hide(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -479,7 +536,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool IsVisible()
         {
-            bool temp = Interop.Window.IsVisible(swigCPtr);
+            bool temp = Interop.Window.IsVisible(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return temp;
         }
@@ -491,7 +548,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public uint GetSupportedAuxiliaryHintCount()
         {
-            uint ret = Interop.Window.GetSupportedAuxiliaryHintCount(swigCPtr);
+            uint ret = Interop.Window.GetSupportedAuxiliaryHintCount(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -504,7 +561,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public string GetSupportedAuxiliaryHint(uint index)
         {
-            string ret = Interop.Window.GetSupportedAuxiliaryHint(swigCPtr, index);
+            string ret = Interop.Window.GetSupportedAuxiliaryHint(SwigCPtr, index);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -518,7 +575,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public uint AddAuxiliaryHint(string hint, string value)
         {
-            uint ret = Interop.Window.AddAuxiliaryHint(swigCPtr, hint, value);
+            uint ret = Interop.Window.AddAuxiliaryHint(SwigCPtr, hint, value);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -531,7 +588,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool RemoveAuxiliaryHint(uint id)
         {
-            bool ret = Interop.Window.RemoveAuxiliaryHint(swigCPtr, id);
+            bool ret = Interop.Window.RemoveAuxiliaryHint(SwigCPtr, id);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -545,7 +602,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool SetAuxiliaryHintValue(uint id, string value)
         {
-            bool ret = Interop.Window.SetAuxiliaryHintValue(swigCPtr, id, value);
+            bool ret = Interop.Window.SetAuxiliaryHintValue(SwigCPtr, id, value);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -558,7 +615,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public string GetAuxiliaryHintValue(uint id)
         {
-            string ret = Interop.Window.GetAuxiliaryHintValue(swigCPtr, id);
+            string ret = Interop.Window.GetAuxiliaryHintValue(SwigCPtr, id);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -571,7 +628,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public uint GetAuxiliaryHintId(string hint)
         {
-            uint ret = Interop.Window.GetAuxiliaryHintId(swigCPtr, hint);
+            uint ret = Interop.Window.GetAuxiliaryHintId(SwigCPtr, hint);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -583,7 +640,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void SetInputRegion(Rectangle inputRegion)
         {
-            Interop.Window.SetInputRegion(swigCPtr, Rectangle.getCPtr(inputRegion));
+            Interop.Window.SetInputRegion(SwigCPtr, Rectangle.getCPtr(inputRegion));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -595,7 +652,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool SetNotificationLevel(NotificationLevel level)
         {
-            bool ret = Interop.Window.SetNotificationLevel(swigCPtr, (int)level);
+            bool ret = Interop.Window.SetNotificationLevel(SwigCPtr, (int)level);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -607,7 +664,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public NotificationLevel GetNotificationLevel()
         {
-            NotificationLevel ret = (NotificationLevel)Interop.Window.GetNotificationLevel(swigCPtr);
+            NotificationLevel ret = (NotificationLevel)Interop.Window.GetNotificationLevel(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -624,7 +681,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void SetOpaqueState(bool opaque)
         {
-            Interop.Window.SetOpaqueState(swigCPtr, opaque);
+            Interop.Window.SetOpaqueState(SwigCPtr, opaque);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -636,7 +693,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool IsOpaqueState()
         {
-            bool ret = Interop.Window.IsOpaqueState(swigCPtr);
+            bool ret = Interop.Window.IsOpaqueState(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -649,7 +706,7 @@ namespace Tizen.NUI
         /// <since_tizen> 4 </since_tizen>
         public bool SetScreenOffMode(ScreenOffMode screenOffMode)
         {
-            bool ret = Interop.Window.SetScreenOffMode(swigCPtr, (int)screenOffMode);
+            bool ret = Interop.Window.SetScreenOffMode(SwigCPtr, (int)screenOffMode);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -661,7 +718,7 @@ namespace Tizen.NUI
         /// <since_tizen> 4 </since_tizen>
         public ScreenOffMode GetScreenOffMode()
         {
-            ScreenOffMode ret = (ScreenOffMode)Interop.Window.GetScreenOffMode(swigCPtr);
+            ScreenOffMode ret = (ScreenOffMode)Interop.Window.GetScreenOffMode(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -674,7 +731,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool SetBrightness(int brightness)
         {
-            bool ret = Interop.Window.SetBrightness(swigCPtr, brightness);
+            bool ret = Interop.Window.SetBrightness(SwigCPtr, brightness);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -686,7 +743,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public int GetBrightness()
         {
-            int ret = Interop.Window.GetBrightness(swigCPtr);
+            int ret = Interop.Window.GetBrightness(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -699,7 +756,7 @@ namespace Tizen.NUI
         /// <since_tizen> 4 </since_tizen>
         public void SetClass(string name, string klass)
         {
-            Interop.Window.Window_SetClass(swigCPtr, name, klass);
+            Interop.Window.SetClass(SwigCPtr, name, klass);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -709,7 +766,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void Raise()
         {
-            Interop.Window.Window_Raise(swigCPtr);
+            Interop.Window.Raise(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -719,7 +776,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void Lower()
         {
-            Interop.Window.Window_Lower(swigCPtr);
+            Interop.Window.Lower(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -729,7 +786,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void Activate()
         {
-            Interop.Window.Window_Activate(swigCPtr);
+            Interop.Window.Activate(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -750,10 +807,13 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void Add(View view)
         {
-            Interop.Actor.Actor_Add(Layer.getCPtr(GetRootLayer()), View.getCPtr(view));
+            Interop.Actor.Add(Layer.getCPtr(GetRootLayer()), View.getCPtr(view));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             this.GetRootLayer().AddViewToLayerList(view); // Maintain the children list in the Layer
-            view.InternalParent = this.GetRootLayer();
+            if (null != view)
+            {
+                view.InternalParent = this.GetRootLayer();
+            }
         }
 
         /// <summary>
@@ -763,9 +823,12 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void Remove(View view)
         {
-            Interop.Actor.Actor_Remove(Layer.getCPtr(GetRootLayer()), View.getCPtr(view));
+            Interop.Actor.Remove(Layer.getCPtr(GetRootLayer()), View.getCPtr(view));
             this.GetRootLayer().RemoveViewFromLayerList(view); // Maintain the children list in the Layer
-            view.InternalParent = null;
+            if (null != view)
+            {
+                view.InternalParent = null;
+            }
         }
 
         /// <summary>
@@ -803,7 +866,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public void KeepRendering(float durationSeconds)
         {
-            Interop.Stage.Stage_KeepRendering(stageCPtr, durationSeconds);
+            Interop.Stage.KeepRendering(stageCPtr, durationSeconds);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -817,7 +880,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool GrabKeyTopmost(int DaliKey)
         {
-            bool ret = Interop.Window.GrabKeyTopmost(HandleRef.ToIntPtr(this.swigCPtr), DaliKey);
+            bool ret = Interop.Window.GrabKeyTopmost(HandleRef.ToIntPtr(this.SwigCPtr), DaliKey);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -831,7 +894,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool UngrabKeyTopmost(int DaliKey)
         {
-            bool ret = Interop.Window.UngrabKeyTopmost(HandleRef.ToIntPtr(this.swigCPtr), DaliKey);
+            bool ret = Interop.Window.UngrabKeyTopmost(HandleRef.ToIntPtr(this.SwigCPtr), DaliKey);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -849,7 +912,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool GrabKey(int DaliKey, KeyGrabMode GrabMode)
         {
-            bool ret = Interop.Window.GrabKey(HandleRef.ToIntPtr(this.swigCPtr), DaliKey, (int)GrabMode);
+            bool ret = Interop.Window.GrabKey(HandleRef.ToIntPtr(this.SwigCPtr), DaliKey, (int)GrabMode);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -863,7 +926,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public bool UngrabKey(int DaliKey)
         {
-            bool ret = Interop.Window.UngrabKey(HandleRef.ToIntPtr(this.swigCPtr), DaliKey);
+            bool ret = Interop.Window.UngrabKey(HandleRef.ToIntPtr(this.SwigCPtr), DaliKey);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -900,6 +963,7 @@ namespace Tizen.NUI
         /// Adds a layer to the stage.
         /// </summary>
         /// <param name="layer">Layer to add.</param>
+        /// <exception cref="ArgumentNullException"> Thrown when layer is null. </exception>
         /// <since_tizen> 3 </since_tizen>
         public void AddLayer(Layer layer)
         {
@@ -910,6 +974,7 @@ namespace Tizen.NUI
         /// Removes a layer from the stage.
         /// </summary>
         /// <param name="layer">Layer to remove.</param>
+        /// <exception cref="ArgumentNullException"> Thrown when layer is null. </exception>
         /// <since_tizen> 3 </since_tizen>
         public void RemoveLayer(Layer layer)
         {
@@ -923,7 +988,7 @@ namespace Tizen.NUI
         /// <since_tizen> 5 </since_tizen>
         public void FeedKey(Key keyEvent)
         {
-            Interop.Window.Window_FeedKeyEvent(Key.getCPtr(keyEvent));
+            Interop.Window.FeedKeyEvent(Key.getCPtr(keyEvent));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -934,7 +999,7 @@ namespace Tizen.NUI
         /// <since_tizen> 4 </since_tizen>
         public void RenderOnce()
         {
-            Interop.Window.Window_RenderOnce(swigCPtr);
+            Interop.Window.RenderOnce(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -945,7 +1010,7 @@ namespace Tizen.NUI
         /// <since_tizen> 5 </since_tizen>
         public void SetTransparency(bool transparent)
         {
-            Interop.Window.SetTransparency(swigCPtr, transparent);
+            Interop.Window.SetTransparency(SwigCPtr, transparent);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
             // Setting transparency of the window should request a relayout of the tree in the case the window changes from fully transparent.
@@ -967,7 +1032,7 @@ namespace Tizen.NUI
             {
                 NUILog.Error("This device does not support surfaceless_context. So Window cannot be created. ");
             }
-            Interop.Window.SetParent(swigCPtr, Window.getCPtr(parent));
+            Interop.Window.SetParent(SwigCPtr, Window.getCPtr(parent));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -984,7 +1049,7 @@ namespace Tizen.NUI
             {
                 NUILog.Error("Fail to create window. because this device does not support opengles.surfaceless_context.");
             }
-            Interop.Window.Unparent(swigCPtr);
+            Interop.Window.Unparent(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -1001,7 +1066,7 @@ namespace Tizen.NUI
             {
                 NUILog.Error("This device does not support surfaceless_context. So Window cannot be created. ");
             }
-            Window ret = Registry.GetManagedBaseHandleFromNativePtr(Interop.Window.GetParent(swigCPtr)) as Window;
+            Window ret = Registry.GetManagedBaseHandleFromNativePtr(Interop.Window.GetParent(SwigCPtr)) as Window;
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -1019,12 +1084,12 @@ namespace Tizen.NUI
 
         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(Window obj)
         {
-            return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
+            return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.SwigCPtr;
         }
 
         internal static bool IsInstalled()
         {
-            bool ret = Interop.Stage.Stage_IsInstalled();
+            bool ret = Interop.Stage.IsInstalled();
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -1036,7 +1101,7 @@ namespace Tizen.NUI
         /// <since_tizen> 6 </since_tizen>
         public void AddAvailableOrientation(Window.WindowOrientation orientation)
         {
-            Interop.Window.Window_AddAvailableOrientation(swigCPtr, (int)orientation);
+            Interop.Window.AddAvailableOrientation(SwigCPtr, (int)orientation);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -1047,7 +1112,7 @@ namespace Tizen.NUI
         /// <since_tizen> 6 </since_tizen>
         public void RemoveAvailableOrientation(Window.WindowOrientation orientation)
         {
-            Interop.Window.Window_RemoveAvailableOrientation(swigCPtr, (int)orientation);
+            Interop.Window.RemoveAvailableOrientation(SwigCPtr, (int)orientation);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -1058,7 +1123,7 @@ namespace Tizen.NUI
         /// <since_tizen> 6 </since_tizen>
         public void SetPreferredOrientation(Window.WindowOrientation orientation)
         {
-            Interop.Window.Window_SetPreferredOrientation(swigCPtr, (int)orientation);
+            Interop.Window.SetPreferredOrientation(SwigCPtr, (int)orientation);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -1069,7 +1134,7 @@ namespace Tizen.NUI
         /// <returns>The preferred orientation if previously set, or none.</returns>
         public Window.WindowOrientation GetPreferredOrientation()
         {
-            Window.WindowOrientation ret = (Window.WindowOrientation)Interop.Window.Window_GetPreferredOrientation(swigCPtr);
+            Window.WindowOrientation ret = (Window.WindowOrientation)Interop.Window.GetPreferredOrientation(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -1082,7 +1147,7 @@ namespace Tizen.NUI
         [EditorBrowsable(EditorBrowsableState.Never)]
         public Window.WindowOrientation GetCurrentOrientation()
         {
-            Window.WindowOrientation ret = (Window.WindowOrientation)Interop.Window.Window_GetCurrentOrientation(swigCPtr);
+            Window.WindowOrientation ret = (Window.WindowOrientation)Interop.Window.GetCurrentOrientation(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -1094,15 +1159,24 @@ namespace Tizen.NUI
         /// <param name="orientations">The list of orientations.</param>
         /// <since_tizen> 6 </since_tizen>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public void SetAvailableOrientations( List<Window.WindowOrientation> orientations )
+        public void SetAvailableOrientations(List<Window.WindowOrientation> orientations)
         {
             PropertyArray orientationArray = new PropertyArray();
-            for( int i = 0; i < orientations.Count; i++ )
+            if (null != orientations)
             {
-              orientationArray.PushBack(new PropertyValue((int)orientations[i]));
+                for (int i = 0; i < orientations.Count; i++)
+                {
+                    PropertyValue value = new PropertyValue((int)orientations[i]);
+                    orientationArray.PushBack(value);
+                }
             }
 
-            Interop.Window.Window_SetAvailableOrientations(swigCPtr, PropertyArray.getCPtr(orientationArray));
+            Interop.Window.SetAvailableOrientations(SwigCPtr, PropertyArray.getCPtr(orientationArray));
+            for (uint i = 0; i < orientationArray.Count(); i++)
+            {
+                orientationArray[i].Dispose();
+            }
+            orientationArray.Dispose();
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
@@ -1113,21 +1187,25 @@ namespace Tizen.NUI
         [EditorBrowsable(EditorBrowsableState.Never)]
         public int GetNativeId()
         {
-            int ret = Interop.Window.GetNativeId(swigCPtr);
+            int ret = Interop.Window.GetNativeId(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
         internal Any GetNativeHandle()
         {
-            Any ret = new Any(Interop.WindowInternal.Window_GetNativeHandle(swigCPtr), true);
+            Any ret = new Any(Interop.WindowInternal.WindowGetNativeHandle(SwigCPtr), true);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
         internal void Add(Layer layer)
         {
-            Interop.Window.Add(swigCPtr, Layer.getCPtr(layer));
+            if (null == layer)
+            {
+                throw new ArgumentNullException(nameof(layer));
+            }
+            Interop.Window.Add(SwigCPtr, Layer.getCPtr(layer));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
             LayersChildren?.Add(layer);
@@ -1136,7 +1214,11 @@ namespace Tizen.NUI
 
         internal void Remove(Layer layer)
         {
-            Interop.Window.Remove(swigCPtr, Layer.getCPtr(layer));
+            if (null == layer)
+            {
+                throw new ArgumentNullException(nameof(layer));
+            }
+            Interop.Window.Remove(SwigCPtr, Layer.getCPtr(layer));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
             LayersChildren?.Remove(layer);
@@ -1145,15 +1227,16 @@ namespace Tizen.NUI
 
         internal Vector2 GetSize()
         {
-            var val = new Uint16Pair(Interop.Window.GetSize(swigCPtr), false);
+            var val = new Uint16Pair(Interop.Window.GetSize(SwigCPtr), false);
             Vector2 ret = new Vector2(val.GetWidth(), val.GetHeight());
+            val.Dispose();
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
         internal RenderTaskList GetRenderTaskList()
         {
-            RenderTaskList ret = new RenderTaskList(Interop.Stage.Stage_GetRenderTaskList(stageCPtr), true);
+            RenderTaskList ret = new RenderTaskList(Interop.Stage.GetRenderTaskList(stageCPtr), true);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -1168,7 +1251,7 @@ namespace Tizen.NUI
             if (LayersChildren == null || LayersChildren.Count < 0)
                 return 0;
 
-            return (uint) LayersChildren.Count;
+            return (uint)LayersChildren.Count;
         }
 
         internal Layer GetRootLayer()
@@ -1177,7 +1260,7 @@ namespace Tizen.NUI
             // Core has been initialized, not when Stage is ready.
             if (_rootLayer == null && Window.IsInstalled())
             {
-                _rootLayer = new Layer(Interop.Window.GetRootLayer(swigCPtr), true);
+                _rootLayer = new Layer(Interop.Window.GetRootLayer(SwigCPtr), true);
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
                 LayersChildren?.Add(_rootLayer);
                 _rootLayer.SetWindow(this);
@@ -1187,40 +1270,40 @@ namespace Tizen.NUI
 
         internal void SetBackgroundColor(Vector4 color)
         {
-            Interop.Window.SetBackgroundColor(swigCPtr, Vector4.getCPtr(color));
+            Interop.Window.SetBackgroundColor(SwigCPtr, Vector4.getCPtr(color));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         internal Vector4 GetBackgroundColor()
         {
-            Vector4 ret = new Vector4(Interop.Window.GetBackgroundColor(swigCPtr), true);
+            Vector4 ret = new Vector4(Interop.Window.GetBackgroundColor(SwigCPtr), true);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
         internal Vector2 GetDpi()
         {
-            Vector2 ret = new Vector2(Interop.Stage.Stage_GetDpi(stageCPtr), true);
+            Vector2 ret = new Vector2(Interop.Stage.GetDpi(stageCPtr), true);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
         internal ObjectRegistry GetObjectRegistry()
         {
-            ObjectRegistry ret = new ObjectRegistry(Interop.Stage.Stage_GetObjectRegistry(stageCPtr), true);
+            ObjectRegistry ret = new ObjectRegistry(Interop.Stage.GetObjectRegistry(stageCPtr), true);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
         internal void SetRenderingBehavior(RenderingBehaviorType renderingBehavior)
         {
-            Interop.Stage.Stage_SetRenderingBehavior(stageCPtr, (int)renderingBehavior);
+            Interop.Stage.SetRenderingBehavior(stageCPtr, (int)renderingBehavior);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         internal RenderingBehaviorType GetRenderingBehavior()
         {
-            RenderingBehaviorType ret = (RenderingBehaviorType)Interop.Stage.Stage_GetRenderingBehavior(stageCPtr);
+            RenderingBehaviorType ret = (RenderingBehaviorType)Interop.Stage.GetRenderingBehavior(stageCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending)
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
@@ -1228,44 +1311,51 @@ namespace Tizen.NUI
 
         internal void SetWindowSize(Size2D size)
         {
+            if (null == size)
+            {
+                throw new ArgumentNullException(nameof(size));
+            }
             var val = new Uint16Pair((uint)size.Width, (uint)size.Height);
-            Interop.Window.SetSize(swigCPtr, Uint16Pair.getCPtr(val));
-
+            Interop.Window.SetSize(SwigCPtr, Uint16Pair.getCPtr(val));
+            val.Dispose();
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-
             // Resetting Window size should request a relayout of the tree.
         }
 
         internal Size2D GetWindowSize()
         {
-            var val = new Uint16Pair(Interop.Window.GetSize(swigCPtr), false);
+            var val = new Uint16Pair(Interop.Window.GetSize(SwigCPtr), false);
             Size2D ret = new Size2D(val.GetWidth(), val.GetHeight());
-
+            val.Dispose();
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
         internal void SetPosition(Position2D position)
         {
+            if (null == position)
+            {
+                throw new ArgumentNullException(nameof(position));
+            }
             var val = new Uint16Pair((uint)position.X, (uint)position.Y);
-            Interop.Window.SetPosition(swigCPtr, Uint16Pair.getCPtr(val));
-
+            Interop.Window.SetPosition(SwigCPtr, Uint16Pair.getCPtr(val));
+            val.Dispose();
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             // Setting Position of the window should request a relayout of the tree.
         }
 
         internal Position2D GetPosition()
         {
-            var val = new Uint16Pair(Interop.Window.GetPosition(swigCPtr), true);
+            var val = new Uint16Pair(Interop.Window.GetPosition(SwigCPtr), true);
             Position2D ret = new Position2D(val.GetX(), val.GetY());
-
+            val.Dispose();
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
         internal void SetPositionSize(Rectangle positionSize)
         {
-            Interop.Window.Window_SetPositionSize(swigCPtr, Rectangle.getCPtr(positionSize));
+            Interop.Window.SetPositionSize(SwigCPtr, Rectangle.getCPtr(positionSize));
 
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
 
@@ -1273,6 +1363,24 @@ namespace Tizen.NUI
         }
 
         /// <summary>
+        /// Add FrameUpdateCallback
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void AddFrameUpdateCallback(FrameUpdateCallbackInterface frameUpdateCallback)
+        {
+            frameUpdateCallback?.AddFrameUpdateCallback(stageCPtr, Layer.getCPtr(GetRootLayer()));
+        }
+
+        /// <summary>
+        /// Remove FrameUpdateCallback
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void RemoveFrameUpdateCallback(FrameUpdateCallbackInterface frameUpdateCallback)
+        {
+            frameUpdateCallback?.RemoveFrameUpdateCallback(stageCPtr);
+        }
+
+        /// <summary>
         /// Dispose for Window
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
@@ -1289,13 +1397,21 @@ namespace Tizen.NUI
                 //Release your own managed resources here.
                 //You should release all of your own disposable objects here.
 
-                _rootLayer.Dispose();
-                localController.Dispose();
+                if (_rootLayer != null)
+                {
+                    _rootLayer.Dispose();
+                }
 
-                foreach(var layer in _childLayers)
+                localController?.Dispose();
+
+                foreach (var layer in _childLayers)
                 {
-                    layer.Dispose();
+                    if (layer != null)
+                    {
+                        layer.Dispose();
+                    }
                 }
+
                 _childLayers.Clear();
             }
 
@@ -1308,7 +1424,114 @@ namespace Tizen.NUI
         [EditorBrowsable(EditorBrowsableState.Never)]
         protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
         {
-            Interop.Window.delete_Window(swigCPtr);
+            Interop.Window.DeleteWindow(swigCPtr);
+        }
+
+        private static Dictionary<int, internalHookCallbackType> frameCallbackList = new Dictionary<int, internalHookCallbackType>();
+
+        private static readonly object locker = new object();
+
+        private static int key = 0;
+
+        private static FrameCallbackType internalHookFrameCallback = OnInternalHookFrameCallback;
+
+        private struct internalHookCallbackType
+        {
+            public FrameCallbackType userCallback;
+            public int frameId;
+        }
+
+        private static void OnInternalHookFrameCallback(int id)
+        {
+            lock (locker)
+            {
+                if (frameCallbackList.ContainsKey(id))
+                {
+                    if (frameCallbackList[id].userCallback != null)
+                    {
+                        frameCallbackList[id].userCallback.Invoke(frameCallbackList[id].frameId);
+                        frameCallbackList.Remove(id);
+                    }
+                    else
+                    {
+                        NUILog.Error($"found userCallback is NULL");
+                        frameCallbackList.Remove(id);
+                    }
+                }
+            }
+        }
+
+        private int AddInterHookCallback(FrameCallbackType callback, int frameId)
+        {
+            if (null == callback)
+            {
+                throw new ArgumentNullException(nameof(callback), "FrameCallbackType should not be null");
+            }
+            var assignedKey = 0;
+            lock (locker)
+            {
+                key++;
+                assignedKey = key;
+                frameCallbackList.Add(assignedKey, new internalHookCallbackType()
+                {
+                    userCallback = callback,
+                    frameId = frameId,
+                });
+            }
+            return assignedKey;
+        }
+
+        /// <summary>
+        /// Type of callback which is called when the frame rendering is done by graphics driver or when the frame is displayed on display.
+        /// </summary>
+        /// <param name="frameId">The Id to specify the frame. It will be passed when the callback is called.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public delegate void FrameCallbackType(int frameId);
+
+        /// <summary>
+        /// Adds a callback that is called when the frame rendering is done by the graphics driver.
+        /// A callback of the following type may be used:
+        /// <code>
+        /// void MyFunction( int frameId )
+        /// </code>
+        /// This callback will be deleted once it is called.
+        /// <remarks>
+        /// Ownership of the callback is passed onto this class
+        /// </remarks>
+        /// </summary>
+        /// <param name="callback">The function to call</param>
+        /// <param name="frameId">The Id to specify the frame. It will be passed when the callback is called.</param>
+        /// <exception cref="ArgumentNullException">This exception can occur by the callback is null.</exception>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void AddFrameRenderedCallback(FrameCallbackType callback, int frameId)
+        {
+            var assignedKey = AddInterHookCallback(callback, frameId);
+            Interop.WindowInternal.AddFrameRenderedCallback(SwigCPtr, new HandleRef(this, Marshal.GetFunctionPointerForDelegate<Delegate>(internalHookFrameCallback)), assignedKey);
+
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Adds a callback that is called when the frame is displayed on the display.
+        /// A callback of the following type may be used:
+        /// <code>
+        /// void MyFunction( int frameId )
+        /// </code>
+        /// This callback will be deleted once it is called.
+        /// <remarks>
+        /// Ownership of the callback is passed onto this class
+        /// </remarks>
+        /// </summary>
+        /// <param name="callback">The function to call</param>
+        /// <param name="frameId">The Id to specify the frame. It will be passed when the callback is called.</param>
+        /// <exception cref="ArgumentNullException">This exception can occur by the callback is null.</exception>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void AddFramePresentedCallback(FrameCallbackType callback, int frameId)
+        {
+            var assignedKey = AddInterHookCallback(callback, frameId);
+            Interop.WindowInternal.AddFramePresentedCallback(SwigCPtr, new HandleRef(this, Marshal.GetFunctionPointerForDelegate<Delegate>(internalHookFrameCallback)), assignedKey);
+
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
     }
 }