aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/IClientAPI.cs5
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs21
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs2
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 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 {
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