aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine
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/ScriptEngine
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/ScriptEngine')
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs9
1 files changed, 3 insertions, 6 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 6dd94bb..c552b92 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -806,12 +806,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine
806 instance.ClearQueue(); 806 instance.ClearQueue();
807 instance.Stop(0); 807 instance.Stop(0);
808 808
809 SceneObjectPart part =
810 m_Scene.GetSceneObjectPart(localID);
811
812 if (part != null)
813 part.RemoveScriptEvents(itemID);
814
815// bool objectRemoved = false; 809// bool objectRemoved = false;
816 810
817 lock (m_PrimObjects) 811 lock (m_PrimObjects)
@@ -846,7 +840,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
846 840
847 ObjectRemoved handlerObjectRemoved = OnObjectRemoved; 841 ObjectRemoved handlerObjectRemoved = OnObjectRemoved;
848 if (handlerObjectRemoved != null) 842 if (handlerObjectRemoved != null)
843 {
844 SceneObjectPart part = m_Scene.GetSceneObjectPart(localID);
849 handlerObjectRemoved(part.UUID); 845 handlerObjectRemoved(part.UUID);
846 }
850 847
851 CleanAssemblies(); 848 CleanAssemblies();
852 } 849 }