aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2010-01-25 21:51:58 +0000
committerJustin Clark-Casey (justincc)2010-01-25 21:51:58 +0000
commit38cfc9366ce264d2aeb6409df48be7cecc348952 (patch)
tree2f90126ff91a339436d93f1c7d13fd69e1a44f24 /OpenSim/Region/ClientStack
parent* Quick fix to Remote Console session ID handling. (diff)
downloadopensim-SC_OLD-38cfc9366ce264d2aeb6409df48be7cecc348952.zip
opensim-SC_OLD-38cfc9366ce264d2aeb6409df48be7cecc348952.tar.gz
opensim-SC_OLD-38cfc9366ce264d2aeb6409df48be7cecc348952.tar.bz2
opensim-SC_OLD-38cfc9366ce264d2aeb6409df48be7cecc348952.tar.xz
Fix a problem where llDie() calls were sometimes leaving dead objects behind.
When an object was deleted, the remove script instance call was aggregating the scripting events as normal. This would queue a full update of the prim before the viewer was notifed of the deletion of that prim (QuitPacket) On some occasions, the QuitPacket would be sent before the full update was dequeued and sent. In principle, you would think that a viewer would ignore updates for deleted prims. But it appears that in the Linden viewer (1.23.5), a prim update that arrives after the prim was deleted instead makes the deleted prim persist in the viewer. Such prims have no properties and cannot be removed from the viewer except by a relog. This change stops the prim event aggregation call if it's being deleted anyway, hence removing the spurious viewer-confusing update.
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs18
1 files changed, 18 insertions, 0 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 4b5e4c4..1d364d4 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -1465,6 +1465,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1465 1465
1466 public void SendKillObject(ulong regionHandle, uint localID) 1466 public void SendKillObject(ulong regionHandle, uint localID)
1467 { 1467 {
1468// m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, localID, regionHandle);
1469
1468 KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject); 1470 KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject);
1469 // TODO: don't create new blocks if recycling an old packet 1471 // TODO: don't create new blocks if recycling an old packet
1470 kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; 1472 kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1];
@@ -3472,6 +3474,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3472 3474
3473 public void SendPrimitiveToClient(SendPrimitiveData data) 3475 public void SendPrimitiveToClient(SendPrimitiveData data)
3474 { 3476 {
3477// string text = data.text;
3478// if (text.IndexOf("\n") >= 0)
3479// text = text.Remove(text.IndexOf("\n"));
3480// m_log.DebugFormat(
3481// "[CLIENT]: Placing request to send full info about prim {0} text {1} to client {2}",
3482// data.localID, text, Name);
3483
3475 if (data.priority == double.NaN) 3484 if (data.priority == double.NaN)
3476 { 3485 {
3477 m_log.Error("[LLClientView] SendPrimitiveToClient received a NaN priority, dropping update"); 3486 m_log.Error("[LLClientView] SendPrimitiveToClient received a NaN priority, dropping update");
@@ -3509,7 +3518,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3509 3518
3510 outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[count]; 3519 outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[count];
3511 for (int i = 0; i < count; i++) 3520 for (int i = 0; i < count; i++)
3521 {
3512 outPacket.ObjectData[i] = m_primFullUpdates.Dequeue(); 3522 outPacket.ObjectData[i] = m_primFullUpdates.Dequeue();
3523
3524// string text = Util.FieldToString(outPacket.ObjectData[i].Text);
3525// if (text.IndexOf("\n") >= 0)
3526// text = text.Remove(text.IndexOf("\n"));
3527// m_log.DebugFormat(
3528// "[CLIENT]: Sending full info about prim {0} text {1} to client {2}",
3529// outPacket.ObjectData[i].ID, text, Name);
3530 }
3513 } 3531 }
3514 3532
3515 OutPacket(outPacket, ThrottleOutPacketType.State); 3533 OutPacket(outPacket, ThrottleOutPacketType.State);