diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 4db5b22..92a76ac 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -4032,26 +4032,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4032 | private class ObjectPropertyUpdate : IEntityUpdate | 4032 | private class ObjectPropertyUpdate : IEntityUpdate |
4033 | { | 4033 | { |
4034 | internal bool SendFamilyProps; | 4034 | internal bool SendFamilyProps; |
4035 | internal bool SendObjectProps; | ||
4035 | 4036 | ||
4036 | public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam) | 4037 | public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam, bool sendobj) |
4037 | : base(entity,flags) | 4038 | : base(entity,flags) |
4038 | { | 4039 | { |
4039 | SendFamilyProps = sendfam; | 4040 | SendFamilyProps = sendfam; |
4041 | SendObjectProps = sendobj; | ||
4042 | } | ||
4043 | public void Update(ObjectPropertyUpdate update) | ||
4044 | { | ||
4045 | SendFamilyProps = SendFamilyProps || update.SendFamilyProps; | ||
4046 | SendObjectProps = SendObjectProps || update.SendObjectProps; | ||
4047 | Flags |= update.Flags; | ||
4040 | } | 4048 | } |
4041 | } | 4049 | } |
4042 | 4050 | ||
4043 | public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) | 4051 | public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) |
4044 | { | 4052 | { |
4045 | uint priority = m_prioritizer.GetUpdatePriority(this, entity); | 4053 | uint priority = 0; // time based ordering only |
4046 | lock (m_entityProps.SyncRoot) | 4054 | lock (m_entityProps.SyncRoot) |
4047 | m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true)); | 4055 | m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true,false)); |
4048 | } | 4056 | } |
4049 | 4057 | ||
4050 | public void SendObjectPropertiesReply(ISceneEntity entity) | 4058 | public void SendObjectPropertiesReply(ISceneEntity entity) |
4051 | { | 4059 | { |
4052 | uint priority = m_prioritizer.GetUpdatePriority(this, entity); | 4060 | uint priority = 0; // time based ordering only |
4053 | lock (m_entityProps.SyncRoot) | 4061 | lock (m_entityProps.SyncRoot) |
4054 | m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false)); | 4062 | m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false,true)); |
4055 | } | 4063 | } |
4056 | 4064 | ||
4057 | private void ProcessEntityPropertyRequests(int maxUpdates) | 4065 | private void ProcessEntityPropertyRequests(int maxUpdates) |
@@ -4082,7 +4090,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4082 | objectFamilyBlocks.Value.Add(objPropDB); | 4090 | objectFamilyBlocks.Value.Add(objPropDB); |
4083 | } | 4091 | } |
4084 | } | 4092 | } |
4085 | else | 4093 | |
4094 | if (update.SendObjectProps) | ||
4086 | { | 4095 | { |
4087 | if (update.Entity is SceneObjectPart) | 4096 | if (update.Entity is SceneObjectPart) |
4088 | { | 4097 | { |