[NUI] Change LayoutController process
authorhuiyu.eun <huiyu.eun@samsung.com>
Tue, 9 Feb 2021 04:16:31 +0000 (13:16 +0900)
committerhuiyueun <35286162+huiyueun@users.noreply.github.com>
Tue, 9 Feb 2021 04:24:43 +0000 (13:24 +0900)
Register a callback when Layout is first used.

Signed-off-by: huiyu.eun <huiyu.eun@samsung.com>
src/Tizen.NUI/src/internal/Layouting/LayoutController.cs
src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs

index 06fde1c..2cdaab3 100755 (executable)
@@ -52,9 +52,6 @@ namespace Tizen.NUI
         public LayoutController(Window window) : this(Interop.LayoutController.LayoutController_New(), true)
         {
             _window = window;
-            _instance = new Callback(Process);
-            Interop.LayoutController.LayoutController_SetCallback(swigCPtr, _instance);
-
             _layoutTransitionDataQueue = new List<LayoutData>();
         }
 
@@ -108,6 +105,18 @@ namespace Tizen.NUI
         public bool OverrideCoreAnimation {get;set;} = false;
 
         /// <summary>
+        /// Create and set process callback
+        /// </summary>
+        internal void CreateProcessCallback()
+        {
+            if (_instance == null)
+            {
+                _instance = new Callback(Process);
+                Interop.LayoutController.LayoutController_SetCallback(SwigCPtr, _instance);
+            }
+        }
+
+        /// <summary>
         /// Add transition data for a LayoutItem to the transition stack.
         /// </summary>
         /// <param name="transitionDataEntry">Transition data for a LayoutItem.</param>
index 59f1f58..e60aaa0 100755 (executable)
@@ -109,6 +109,7 @@ namespace Tizen.NUI.BaseComponents
 
         internal void SetLayout(LayoutItem layout)
         {
+            Window.Instance.LayoutController.CreateProcessCallback();
             _layout = layout;
             _layout?.AttachToOwner(this);
             _layout?.RequestLayout();