aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2014-08-23 20:59:11 +0100
committerUbitUmarov2014-08-23 20:59:11 +0100
commit63d1916f511fdbbec8bc111f4bf80b3e4e0bc267 (patch)
tree859db7bf594ac204a786cc41599fdea6727361da
parent back to sending attachment sog kills in place of the hack. This is the (diff)
downloadopensim-SC-63d1916f511fdbbec8bc111f4bf80b3e4e0bc267.zip
opensim-SC-63d1916f511fdbbec8bc111f4bf80b3e4e0bc267.tar.gz
opensim-SC-63d1916f511fdbbec8bc111f4bf80b3e4e0bc267.tar.bz2
opensim-SC-63d1916f511fdbbec8bc111f4bf80b3e4e0bc267.tar.xz
Remove entities from updates queues on kill. Do it sync so enqueues after
the kill work
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/PriorityQueue.cs15
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs6
2 files changed, 21 insertions, 0 deletions
diff --git a/OpenSim/Framework/PriorityQueue.cs b/OpenSim/Framework/PriorityQueue.cs
index d6c39a7..4f05f65 100644
--- a/OpenSim/Framework/PriorityQueue.cs
+++ b/OpenSim/Framework/PriorityQueue.cs
@@ -134,6 +134,21 @@ namespace OpenSim.Framework
134 return true; 134 return true;
135 } 135 }
136 136
137
138 public void Remove(List<uint> ids)
139 {
140 LookupItem lookup;
141
142 foreach (uint localid in ids)
143 {
144 if (m_lookupTable.TryGetValue(localid, out lookup))
145 {
146 lookup.Heap.Remove(lookup.Handle);
147 m_lookupTable.Remove(localid);
148 }
149 }
150 }
151
137 /// <summary> 152 /// <summary>
138 /// Remove an item from one of the queues. Specifically, it removes the 153 /// Remove an item from one of the queues. Specifically, it removes the
139 /// oldest item from the next queue in order to provide fair access to 154 /// oldest item from the next queue in order to provide fair access to
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 06f1301..3d02f36 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -1660,6 +1660,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1660// foreach (uint id in localIDs) 1660// foreach (uint id in localIDs)
1661// m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, id, regionHandle); 1661// m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, id, regionHandle);
1662 1662
1663 // remove pending entities
1664 lock (m_entityProps.SyncRoot)
1665 m_entityProps.Remove(localIDs);
1666 lock (m_entityUpdates.SyncRoot)
1667 m_entityUpdates.Remove(localIDs);
1668
1663 KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject); 1669 KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject);
1664 // TODO: don't create new blocks if recycling an old packet 1670 // TODO: don't create new blocks if recycling an old packet
1665 kill.ObjectData = new KillObjectPacket.ObjectDataBlock[localIDs.Count]; 1671 kill.ObjectData = new KillObjectPacket.ObjectDataBlock[localIDs.Count];