[NUI] Revert "Sync with dalihub & API5 branch (#631)" (#635)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / internal / DisposeQueue.cs
index a7004a5..cde10b2 100755 (executable)
@@ -17,7 +17,7 @@ namespace Tizen.NUI
     {
         private static readonly DisposeQueue _disposableQueue = new DisposeQueue();
         private List<IDisposable> _disposables = new List<IDisposable>();
-        private Object _listLock = new object();
+        private System.Object _listLock = new object();
         private EventThreadCallback _eventThreadCallback;
         private EventThreadCallback.CallbackDelegate _disposeQueueProcessDisposablesDelegate;
 
@@ -34,25 +34,33 @@ namespace Tizen.NUI
             get { return _disposableQueue; }
         }
 
+        private bool _isCalled = false;
         public void Initialize()
         {
+            if(_isCalled == false)
+            {
             _disposeQueueProcessDisposablesDelegate = new EventThreadCallback.CallbackDelegate(ProcessDisposables);
             _eventThreadCallback = new EventThreadCallback(_disposeQueueProcessDisposablesDelegate);
+                _isCalled = true;
+            }
         }
 
         public void Add(IDisposable disposable)
         {
-            lock(_listLock)
+            lock (_listLock)
             {
                 _disposables.Add(disposable);
             }
 
-            _eventThreadCallback.Trigger();
+            if (_eventThreadCallback != null)
+            {
+                _eventThreadCallback.Trigger();
+            }
         }
 
-        private void ProcessDisposables()
+        internal void ProcessDisposables()
         {
-            lock(_listLock)
+            lock (_listLock)
             {
                 foreach (IDisposable disposable in _disposables)
                 {