diff options
-rw-r--r-- | OpenSim/Framework/IClientAPI.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 21 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs | 2 |
3 files changed, 21 insertions, 7 deletions
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index c56a756..f573c32 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -575,6 +575,11 @@ namespace OpenSim.Framework | |||
575 | public ISceneEntity Entity; | 575 | public ISceneEntity Entity; |
576 | public uint Flags; | 576 | public uint Flags; |
577 | 577 | ||
578 | public virtual void Update(IEntityUpdate update) | ||
579 | { | ||
580 | this.Flags |= update.Flags; | ||
581 | } | ||
582 | |||
578 | public IEntityUpdate(ISceneEntity entity, uint flags) | 583 | public IEntityUpdate(ISceneEntity entity, uint flags) |
579 | { | 584 | { |
580 | Entity = entity; | 585 | Entity = entity; |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index f926c35..a6f2d09 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 | { |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs index 6521a00..b62ec07 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs | |||
@@ -87,7 +87,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
87 | if (m_lookupTable.TryGetValue(localid, out lookup)) | 87 | if (m_lookupTable.TryGetValue(localid, out lookup)) |
88 | { | 88 | { |
89 | entry = lookup.Heap[lookup.Handle].EntryOrder; | 89 | entry = lookup.Heap[lookup.Handle].EntryOrder; |
90 | value.Flags |= lookup.Heap[lookup.Handle].Value.Flags; | 90 | value.Update(lookup.Heap[lookup.Handle].Value); |
91 | lookup.Heap.Remove(lookup.Handle); | 91 | lookup.Heap.Remove(lookup.Handle); |
92 | } | 92 | } |
93 | 93 | ||