temporary fix of crash problem
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / internal / DisposeQueue.cs
1 // Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
2 // PROPRIETARY/CONFIDENTIAL
3 // This software is the confidential and proprietary
4 // information of SAMSUNG ELECTRONICS ("Confidential Information"). You shall
5 // not disclose such Confidential Information and shall use it only in
6 // accordance with the terms of the license agreement you entered into with
7 // SAMSUNG ELECTRONICS.
8 //
9
10 using System;
11 using System.Collections.Generic;
12
13 namespace Tizen.NUI
14 {
15
16     internal class DisposeQueue
17     {
18         private static readonly DisposeQueue _disposableQueue = new DisposeQueue();
19         private List<IDisposable> _disposables = new List<IDisposable>();
20         private Object _listLock = new object();
21         /* temporary removal because of crash issue. this will be fixed later. 2017-04-04
22         private EventThreadCallback _eventThreadCallback;
23         private EventThreadCallback.CallbackDelegate _disposeQueueProcessDisposablesDelegate;
24         */
25         private DisposeQueue()
26         {
27         }
28
29         ~DisposeQueue()
30         {
31         }
32
33         public static DisposeQueue Instance
34         {
35             get { return _disposableQueue; }
36         }
37
38         public void Initialize()
39         {
40             /* temporary removal because of crash issue. this will be fixed later. 2017-04-04
41             _disposeQueueProcessDisposablesDelegate = new EventThreadCallback.CallbackDelegate(ProcessDisposables);
42             _eventThreadCallback = new EventThreadCallback(_disposeQueueProcessDisposablesDelegate);
43             */
44         }
45
46         public void Add(IDisposable disposable)
47         {
48             lock(_listLock)
49             {
50                 _disposables.Add(disposable);
51             }
52
53             /* temporary removal because of crash issue. this will be fixed later. 2017-04-04
54             _eventThreadCallback.Trigger();
55             */
56         }
57
58         private void ProcessDisposables()
59         {
60             lock(_listLock)
61             {
62                 foreach (IDisposable disposable in _disposables)
63                 {
64                     disposable.Dispose();
65                 }
66                 _disposables.Clear();
67             }
68         }
69     }
70 }