aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-10-21 18:27:09 +0100
committerJustin Clark-Casey (justincc)2014-11-25 23:22:20 +0000
commite6af551007b20acda5ec32c3a15a08d0c393a454 (patch)
treefdc6117b49f0ee74a07da68bd1d36ff34265eb3f
parentAdd "debug lludp throttles get/set request" and get current (diff)
downloadopensim-SC-e6af551007b20acda5ec32c3a15a08d0c393a454.zip
opensim-SC-e6af551007b20acda5ec32c3a15a08d0c393a454.tar.gz
opensim-SC-e6af551007b20acda5ec32c3a15a08d0c393a454.tar.bz2
opensim-SC-e6af551007b20acda5ec32c3a15a08d0c393a454.tar.xz
For now, send all non-full terse updates for ones own avatar directly to the LLUDP client stack rather than queueing internally within LLClientView.
When an HG avatar enters a scene, it delays processing of entity updates. Could be crowding out by other updates or something else. This delay in ones own av mvmt updates results in mvmt lag experienced on the client. Avoiding the internal LLClientView for these packets appears to resolve this issue. Appears most noticeably for avatars with attachments, though has also been seen on those without sometimes. Hasn't been observed for non-HG avatars in general. Will be investigating exactly what the problem is, at which point there will be a more permanent solution.
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs22
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs9
2 files changed, 27 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index c839c05..c8c00c8 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -3834,11 +3834,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3834 /// </summary> 3834 /// </summary>
3835 public void SendEntityUpdate(ISceneEntity entity, PrimUpdateFlags updateFlags) 3835 public void SendEntityUpdate(ISceneEntity entity, PrimUpdateFlags updateFlags)
3836 { 3836 {
3837 //double priority = m_prioritizer.GetUpdatePriority(this, entity); 3837 if (entity.UUID == m_agentId && !updateFlags.HasFlag(PrimUpdateFlags.FullUpdate))
3838 uint priority = m_prioritizer.GetUpdatePriority(this, entity); 3838 {
3839 ImprovedTerseObjectUpdatePacket packet
3840 = (ImprovedTerseObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ImprovedTerseObjectUpdate);
3839 3841
3840 lock (m_entityUpdates.SyncRoot) 3842 packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle;
3841 m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation)); 3843 packet.RegionData.TimeDilation = Utils.FloatToUInt16(1, 0.0f, 1.0f);
3844 packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
3845 packet.ObjectData[0] = CreateImprovedTerseBlock(entity, false);
3846 OutPacket(packet, ThrottleOutPacketType.Unknown, true);
3847 }
3848 else
3849 {
3850 //double priority = m_prioritizer.GetUpdatePriority(this, entity);
3851 uint priority = m_prioritizer.GetUpdatePriority(this, entity);
3852
3853 lock (m_entityUpdates.SyncRoot)
3854 m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation));
3855 }
3842 } 3856 }
3843 3857
3844 /// <summary> 3858 /// <summary>
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index 64548f2..415a22e 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -898,6 +898,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
898 // packet so that it isn't sent before a queued update packet. 898 // packet so that it isn't sent before a queued update packet.
899 bool forceQueue = (type == PacketType.KillObject); 899 bool forceQueue = (type == PacketType.KillObject);
900 900
901// if (type == PacketType.ImprovedTerseObjectUpdate)
902// {
903// m_log.DebugFormat("Direct send ITOU to {0} in {1}", udpClient.AgentID, Scene.Name);
904// SendPacketFinal(outgoingPacket);
905// return false;
906// }
907// else
908// {
901 if (!outgoingPacket.Client.EnqueueOutgoing(outgoingPacket, forceQueue)) 909 if (!outgoingPacket.Client.EnqueueOutgoing(outgoingPacket, forceQueue))
902 { 910 {
903 SendPacketFinal(outgoingPacket); 911 SendPacketFinal(outgoingPacket);
@@ -907,6 +915,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
907 { 915 {
908 return false; 916 return false;
909 } 917 }
918// }
910 919
911 #endregion Queue or Send 920 #endregion Queue or Send
912 } 921 }