[NUI] Do not remove once event when we dispose
authorEunki, Hong <eunkiki.hong@samsung.com>
Tue, 27 Feb 2024 05:05:49 +0000 (14:05 +0900)
committerSangHyeon Jade Lee <dltkdgus1764@gmail.com>
Wed, 20 Mar 2024 11:19:40 +0000 (20:19 +0900)
Remove event from global static handler is heavy operation.

We can detach whether the view is disposed or not.
So just check disposed is more chip rather than remove event callback.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
src/Tizen.NUI/src/public/BaseComponents/AnimatedImageView.cs
src/Tizen.NUI/src/public/BaseComponents/ImageView.cs
src/Tizen.NUI/src/public/BaseComponents/LottieAnimationView.cs
src/Tizen.NUI/src/public/BaseComponents/ViewBindableProperty.cs
src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs

index 13254f5..9f54633 100755 (executable)
@@ -380,6 +380,11 @@ namespace Tizen.NUI.BaseComponents
         [EditorBrowsable(EditorBrowsableState.Never)]
         protected override void UpdateImage()
         {
+            if (Disposed)
+            {
+                return;
+            }
+
             if (!imagePropertyUpdatedFlag) return;
 
             // Assume that we are using standard Image at first.
index 6d469a8..c519769 100755 (executable)
@@ -1447,11 +1447,6 @@ namespace Tizen.NUI.BaseComponents
                 borderSelector?.Reset(this);
                 resourceUrlSelector?.Reset(this);
                 imagePropertyUpdatedFlag = false;
-                if (imagePropertyUpdateProcessAttachedFlag)
-                {
-                    ProcessorController.Instance.ProcessorOnceEvent -= UpdateImage;
-                    imagePropertyUpdateProcessAttachedFlag = false;
-                }
                 cachedImagePropertyMap?.Dispose();
                 cachedImagePropertyMap = null;
             }
@@ -1540,11 +1535,7 @@ namespace Tizen.NUI.BaseComponents
 
                 // Image visual is not exist anymore. We should ignore lazy UpdateImage
                 imagePropertyUpdatedFlag = false;
-                if (imagePropertyUpdateProcessAttachedFlag)
-                {
-                    ProcessorController.Instance.ProcessorOnceEvent -= UpdateImage;
-                    imagePropertyUpdateProcessAttachedFlag = false;
-                }
+
                 // Update resourceUrl as empty value
                 _resourceUrl = "";
                 cachedImagePropertyMap[ImageVisualProperty.URL] = emptyValue;
@@ -1670,6 +1661,11 @@ namespace Tizen.NUI.BaseComponents
         [EditorBrowsable(EditorBrowsableState.Never)]
         protected virtual void UpdateImage()
         {
+            if (Disposed)
+            {
+                return;
+            }
+
             if (!imagePropertyUpdatedFlag) return;
 
             imagePropertyUpdatedFlag = false;
index f280826..6c3cfa7 100755 (executable)
@@ -890,6 +890,11 @@ namespace Tizen.NUI.BaseComponents
         [EditorBrowsable(EditorBrowsableState.Never)]
         protected override void UpdateImage()
         {
+            if (Disposed)
+            {
+                return;
+            }
+
             if (!imagePropertyUpdatedFlag) return;
 
             // Update currentStates properties to cachedImagePropertyMap
index 7b2ac1f..91b24e7 100755 (executable)
@@ -293,11 +293,6 @@ namespace Tizen.NUI.BaseComponents
 
                     // Background extra data is not valid anymore. We should ignore lazy UpdateBackgroundExtraData
                     view.backgroundExtraDataUpdatedFlag = BackgroundExtraDataUpdatedFlag.None;
-                    if (view.backgroundExtraDataUpdateProcessAttachedFlag)
-                    {
-                        ProcessorController.Instance.ProcessorOnceEvent -= view.UpdateBackgroundExtraData;
-                        view.backgroundExtraDataUpdateProcessAttachedFlag = false;
-                    }
 
                     propertyValue.Dispose();
                     propertyValue = null;
index 32867f5..206cc9a 100755 (executable)
@@ -1227,6 +1227,11 @@ namespace Tizen.NUI.BaseComponents
         /// </summary>
         internal virtual void UpdateBackgroundExtraData()
         {
+            if (Disposed)
+            {
+                return;
+            }
+
             if (backgroundExtraData == null)
             {
                 return;
@@ -1457,11 +1462,6 @@ namespace Tizen.NUI.BaseComponents
             }
 
             backgroundExtraDataUpdatedFlag = BackgroundExtraDataUpdatedFlag.None;
-            if (backgroundExtraDataUpdateProcessAttachedFlag)
-            {
-                ProcessorController.Instance.ProcessorOnceEvent -= UpdateBackgroundExtraData;
-                backgroundExtraDataUpdateProcessAttachedFlag = false;
-            }
 
             LayoutCount = 0;