diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index e29ae2a..cddc7b2 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -325,6 +325,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
325 | 325 | ||
326 | private int m_cachedTextureSerial; | 326 | private int m_cachedTextureSerial; |
327 | private PriorityQueue<double, EntityUpdate> m_entityUpdates; | 327 | private PriorityQueue<double, EntityUpdate> m_entityUpdates; |
328 | private Dictionary<uint, bool> m_seenPrims = new Dictionary<uint, bool>(); | ||
328 | 329 | ||
329 | /// <value> | 330 | /// <value> |
330 | /// List used in construction of data blocks for an object update packet. This is to stop us having to | 331 | /// List used in construction of data blocks for an object update packet. This is to stop us having to |
@@ -3495,7 +3496,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3495 | 3496 | ||
3496 | // Compressed object updates only make sense for LL primitives | 3497 | // Compressed object updates only make sense for LL primitives |
3497 | if (!(update.Entity is SceneObjectPart)) | 3498 | if (!(update.Entity is SceneObjectPart)) |
3499 | { | ||
3498 | canUseCompressed = false; | 3500 | canUseCompressed = false; |
3501 | } | ||
3502 | else | ||
3503 | { | ||
3504 | if (!m_seenPrims.ContainsKey(((SceneObjectPart)update.Entity).LocalId)) | ||
3505 | { | ||
3506 | updateFlags = PrimUpdateFlags.FullUpdate; | ||
3507 | m_seenPrims[((SceneObjectPart)update.Entity).LocalId] = true; | ||
3508 | } | ||
3509 | } | ||
3499 | 3510 | ||
3500 | if (updateFlags.HasFlag(PrimUpdateFlags.FullUpdate)) | 3511 | if (updateFlags.HasFlag(PrimUpdateFlags.FullUpdate)) |
3501 | { | 3512 | { |