[NUI] fix testhub crash issue
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / Events / RotationGestureDetector.cs
index c48ff10..b7fad1c 100755 (executable)
@@ -117,15 +117,45 @@ namespace Tizen.NUI
             return ret;
         }
 
-        /// This will not be public opened.
+        /// <summary>
+        /// override it to clean-up your own resources.
+        /// </summary>
+        /// <param name="type"></param>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
+        protected override void Dispose(DisposeTypes type)
         {
-            if (detectedCallback != null)
+            if (disposed)
+            {
+                return;
+            }
+
+            if (type == DisposeTypes.Explicit)
+            {
+                //Called by User
+                //Release your own managed resources here.
+                //You should release all of your own disposable objects here.
+            }
+
+            //Release your own unmanaged resources here.
+            //You should not access any managed member here except static instance.
+            //because the execution order of Finalizes is non-deterministic.
+
+            if (HasBody())
             {
-                DetectedSignal().Disconnect(detectedCallback);
+                if (detectedCallback != null)
+                {
+                    using RotationGestureDetectedSignal signal = new RotationGestureDetectedSignal(Interop.RotationGesture.RotationGestureDetectorDetectedSignal(GetBaseHandleCPtrHandleRef), false);
+                    signal?.Disconnect(detectedCallback);
+                    detectedCallback = null;
+                }
             }
+            base.Dispose(type);
+        }
 
+        /// This will not be public opened.
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
+        {
             Interop.RotationGesture.DeleteRotationGestureDetector(swigCPtr);
         }