aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-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 320a2fa..677bd14 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++; } }
@@ -3528,6 +3532,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3528 EntityUpdate update; 3532 EntityUpdate update;
3529 while (updatesThisCall < maxUpdates && m_entityUpdates.TryDequeue(out update)) 3533 while (updatesThisCall < maxUpdates && m_entityUpdates.TryDequeue(out update))
3530 { 3534 {
3535 // Please do not remove this unless you can demonstrate on the OpenSim mailing list that a client
3536 // will never receive an update after a prim kill. Even then, keeping the kill record may be a good
3537 // safety measure.
3538 //
3539 // Receiving updates after kills results in undeleteable prims that persist until relog and
3540 // currently occurs because prims can be deleted before all queued updates are sent.
3541 if (m_killRecord.Contains(update.Entity.LocalId))
3542 {
3543// m_log.WarnFormat(
3544// "[CLIENT]: Preventing full update for prim with local id {0} after client for user {1} told it was deleted",
3545// update.Entity.LocalId, Name);
3546 continue;
3547 }
3548
3531 if (update.Entity is SceneObjectPart) 3549 if (update.Entity is SceneObjectPart)
3532 { 3550 {
3533 SceneObjectPart part = (SceneObjectPart)update.Entity; 3551 SceneObjectPart part = (SceneObjectPart)update.Entity;