Lock the object queue when dequeueing

soprefactor
Melanie 2010-06-01 15:08:45 +01:00
parent 5270e54268
commit 9c3c020697
1 changed files with 89 additions and 86 deletions

View File

@ -66,6 +66,8 @@ namespace OpenSim.Region.Framework.Scenes
} }
public void SendPrimUpdates() public void SendPrimUpdates()
{
lock(m_pendingObjects)
{ {
if (m_pendingObjects == null) if (m_pendingObjects == null)
{ {
@ -75,7 +77,7 @@ namespace OpenSim.Region.Framework.Scenes
foreach (EntityBase e in m_presence.Scene.Entities) foreach (EntityBase e in m_presence.Scene.Entities)
{ {
if (e is SceneObjectGroup) if (e != null && e is SceneObjectGroup)
m_pendingObjects.Enqueue((SceneObjectGroup)e); m_pendingObjects.Enqueue((SceneObjectGroup)e);
} }
} }
@ -117,9 +119,9 @@ namespace OpenSim.Region.Framework.Scenes
if ((update.LastFullUpdateTime < part.TimeStampFull) || if ((update.LastFullUpdateTime < part.TimeStampFull) ||
part.IsAttachment) part.IsAttachment)
{ {
// m_log.DebugFormat( // m_log.DebugFormat(
// "[SCENE PRESENCE]: Fully updating prim {0}, {1} - part timestamp {2}", // "[SCENE PRESENCE]: Fully updating prim {0}, {1} - part timestamp {2}",
// part.Name, part.UUID, part.TimeStampFull); // part.Name, part.UUID, part.TimeStampFull);
part.SendFullUpdate(m_presence.ControllingClient, part.SendFullUpdate(m_presence.ControllingClient,
m_presence.GenerateClientFlags(part.UUID)); m_presence.GenerateClientFlags(part.UUID));
@ -136,9 +138,9 @@ namespace OpenSim.Region.Framework.Scenes
} }
else if (update.LastTerseUpdateTime <= part.TimeStampTerse) else if (update.LastTerseUpdateTime <= part.TimeStampTerse)
{ {
// m_log.DebugFormat( // m_log.DebugFormat(
// "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}", // "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}",
// part.Name, part.UUID, part.TimeStampTerse); // part.Name, part.UUID, part.TimeStampTerse);
part.SendTerseUpdateToClient(m_presence.ControllingClient); part.SendTerseUpdateToClient(m_presence.ControllingClient);
@ -169,6 +171,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
} }
}
public void Reset() public void Reset()
{ {