aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs20
1 files changed, 19 insertions, 1 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 17c051a..34cc7d9 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -327,7 +327,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
327 /// thread servicing the m_primFullUpdates queue after a kill. If this happens the object persists as an 327 /// thread servicing the m_primFullUpdates queue after a kill. If this happens the object persists as an
328 /// ownerless phantom. 328 /// ownerless phantom.
329 /// 329 ///
330 /// All manipulation of this set has to occur under a m_primFullUpdate.SyncRoot lock 330 /// All manipulation of this set has to occur under an m_entityUpdates.SyncRoot lock
331 /// 331 ///
332 /// </value> 332 /// </value>
333 protected HashSet<uint> m_killRecord; 333 protected HashSet<uint> m_killRecord;
@@ -382,18 +382,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
382 public string ActiveGroupName { get { return m_activeGroupName; } } 382 public string ActiveGroupName { get { return m_activeGroupName; } }
383 public ulong ActiveGroupPowers { get { return m_activeGroupPowers; } } 383 public ulong ActiveGroupPowers { get { return m_activeGroupPowers; } }
384 public bool IsGroupMember(UUID groupID) { return m_groupPowers.ContainsKey(groupID); } 384 public bool IsGroupMember(UUID groupID) { return m_groupPowers.ContainsKey(groupID); }
385
385 /// <summary> 386 /// <summary>
386 /// First name of the agent/avatar represented by the client 387 /// First name of the agent/avatar represented by the client
387 /// </summary> 388 /// </summary>
388 public string FirstName { get { return m_firstName; } } 389 public string FirstName { get { return m_firstName; } }
390
389 /// <summary> 391 /// <summary>
390 /// Last name of the agent/avatar represented by the client 392 /// Last name of the agent/avatar represented by the client
391 /// </summary> 393 /// </summary>
392 public string LastName { get { return m_lastName; } } 394 public string LastName { get { return m_lastName; } }
395
393 /// <summary> 396 /// <summary>
394 /// Full name of the client (first name and last name) 397 /// Full name of the client (first name and last name)
395 /// </summary> 398 /// </summary>
396 public string Name { get { return FirstName + " " + LastName; } } 399 public string Name { get { return FirstName + " " + LastName; } }
400
397 public uint CircuitCode { get { return m_circuitCode; } } 401 public uint CircuitCode { get { return m_circuitCode; } }
398 public int MoneyBalance { get { return m_moneyBalance; } } 402 public int MoneyBalance { get { return m_moneyBalance; } }
399 public int NextAnimationSequenceNumber { get { return m_animationSequenceNumber++; } } 403 public int NextAnimationSequenceNumber { get { return m_animationSequenceNumber++; } }
@@ -3531,6 +3535,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3531 EntityUpdate update; 3535 EntityUpdate update;
3532 while (updatesThisCall < maxUpdates && m_entityUpdates.TryDequeue(out update)) 3536 while (updatesThisCall < maxUpdates && m_entityUpdates.TryDequeue(out update))
3533 { 3537 {
3538 // Please do not remove this unless you can demonstrate on the OpenSim mailing list that a client
3539 // will never receive an update after a prim kill. Even then, keeping the kill record may be a good
3540 // safety measure.
3541 //
3542 // Receiving updates after kills results in undeleteable prims that persist until relog and
3543 // currently occurs because prims can be deleted before all queued updates are sent.
3544 if (m_killRecord.Contains(update.Entity.LocalId))
3545 {
3546// m_log.WarnFormat(
3547// "[CLIENT]: Preventing full update for prim with local id {0} after client for user {1} told it was deleted",
3548// update.Entity.LocalId, Name);
3549 continue;
3550 }
3551
3534 if (update.Entity is SceneObjectPart) 3552 if (update.Entity is SceneObjectPart)
3535 { 3553 {
3536 SceneObjectPart part = (SceneObjectPart)update.Entity; 3554 SceneObjectPart part = (SceneObjectPart)update.Entity;