diff options
Diffstat (limited to 'OpenSim/Region/Environment/Types')
-rw-r--r-- | OpenSim/Region/Environment/Types/UpdateQueue.cs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/Types/UpdateQueue.cs b/OpenSim/Region/Environment/Types/UpdateQueue.cs index d7eb6ee..dab4258 100644 --- a/OpenSim/Region/Environment/Types/UpdateQueue.cs +++ b/OpenSim/Region/Environment/Types/UpdateQueue.cs | |||
@@ -12,10 +12,43 @@ namespace OpenSim.Region.Environment.Types | |||
12 | 12 | ||
13 | private List<LLUUID> m_ids; | 13 | private List<LLUUID> m_ids; |
14 | 14 | ||
15 | public int Count | ||
16 | { | ||
17 | get { return m_queue.Count; } | ||
18 | } | ||
19 | |||
15 | public UpdateQueue() | 20 | public UpdateQueue() |
16 | { | 21 | { |
17 | m_queue = new Queue<SceneObjectPart>(); | 22 | m_queue = new Queue<SceneObjectPart>(); |
18 | m_ids = new List<LLUUID>(); | 23 | m_ids = new List<LLUUID>(); |
19 | } | 24 | } |
25 | |||
26 | public void Enqueue(SceneObjectPart part) | ||
27 | { | ||
28 | lock (m_ids) | ||
29 | { | ||
30 | if (!m_ids.Contains(part.UUID)) | ||
31 | { | ||
32 | m_ids.Add(part.UUID); | ||
33 | m_queue.Enqueue(part); | ||
34 | } | ||
35 | } | ||
36 | } | ||
37 | |||
38 | public SceneObjectPart Dequeue() | ||
39 | { | ||
40 | SceneObjectPart part = null; | ||
41 | if (m_queue.Count > 0) | ||
42 | { | ||
43 | part = m_queue.Dequeue(); | ||
44 | lock (m_ids) | ||
45 | { | ||
46 | m_ids.Remove(part.UUID); | ||
47 | } | ||
48 | } | ||
49 | |||
50 | return part; | ||
51 | } | ||
52 | |||
20 | } | 53 | } |
21 | } | 54 | } |