[NUI] Change LayoutController process
authorhuiyu.eun <huiyu.eun@samsung.com>
Tue, 9 Feb 2021 04:16:31 +0000 (13:16 +0900)
committerlwc0917 <48237284+lwc0917@users.noreply.github.com>
Thu, 18 Feb 2021 03:15:29 +0000 (12:15 +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 d68171d..03a75bb 100755 (executable)
@@ -52,9 +52,6 @@ namespace Tizen.NUI
         public LayoutController(Window window) : this(Interop.LayoutController.New(), true)
         {
             _window = window;
-            _instance = new Callback(Process);
-            Interop.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.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 cd5d969..58349f4 100755 (executable)
@@ -123,6 +123,7 @@ namespace Tizen.NUI.BaseComponents
 
         internal void SetLayout(LayoutItem layout)
         {
+            Window.Instance.LayoutController.CreateProcessCallback();
             this.layout = layout;
             this.layout?.AttachToOwner(this);
             this.layout?.RequestLayout();