aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-03-12 18:59:50 +0000
committerJustin Clarke Casey2008-03-12 18:59:50 +0000
commitbbb9a21eb5f5705215fe76b697bdcf1469dd3067 (patch)
treefbe9128f71b2cbc4c41b28313ac28ae861619906 /OpenSim/Region
parent* Don't abort (and keep failing) the update if one Entity gives us an excepti... (diff)
downloadopensim-SC-bbb9a21eb5f5705215fe76b697bdcf1469dd3067.zip
opensim-SC-bbb9a21eb5f5705215fe76b697bdcf1469dd3067.tar.gz
opensim-SC-bbb9a21eb5f5705215fe76b697bdcf1469dd3067.tar.bz2
opensim-SC-bbb9a21eb5f5705215fe76b697bdcf1469dd3067.tar.xz
* Fix mantis 757.
* DelinkFromGroup was removing the parts from the delinked group, which later upset the update thread when it tried to do a queued update for that object * Temporary fix is to stop deleting the parts, though it would be good later to stop sending out the now spurious updates * This fix actually reveals another bug, where rapid linking and delinking will cause the non root prims to disappear (though they're actually still there if you relog). This is the next bug to tackle.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs20
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs24
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs12
4 files changed, 32 insertions, 26 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs
index 7d21935..e195c92 100644
--- a/OpenSim/Region/Environment/Scenes/InnerScene.cs
+++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs
@@ -235,7 +235,7 @@ namespace OpenSim.Region.Environment.Scenes
235 } 235 }
236 catch (Exception e) 236 catch (Exception e)
237 { 237 {
238 m_log.ErrorFormat("[INNERSCENE]: Failed to update {0}, {1} - {2}", entity.Name, entity.m_uuid, e); 238 m_log.ErrorFormat("[INNER SCENE]: Failed to update {0}, {1} - {2}", entity.Name, entity.m_uuid, e);
239 } 239 }
240 } 240 }
241 m_updateList.Clear(); 241 m_updateList.Clear();
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index 5683a7a..78b28d5 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -806,26 +806,6 @@ namespace OpenSim.Region.Environment.Scenes
806 } 806 }
807 } 807 }
808 808
809 public void DeleteSceneObjectGroup(SceneObjectGroup group)
810 {
811 SceneObjectPart rootPart = (group).GetChildPart(group.UUID);
812 if (rootPart.PhysActor != null)
813 {
814 PhysicsScene.RemovePrim(rootPart.PhysActor);
815 rootPart.PhysActor = null;
816 }
817
818 m_storageManager.DataStore.RemoveObject(group.UUID, m_regInfo.RegionID);
819 group.DeleteGroup();
820
821 lock (Entities)
822 {
823 Entities.Remove(group.UUID);
824 m_innerScene.RemoveAPrimCount();
825 }
826 group.DeleteParts();
827 }
828
829 public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart, 809 public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart,
830 LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, 810 LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
831 uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags, 811 uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 1c6efd2..1a73e78 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -2566,6 +2566,30 @@ namespace OpenSim.Region.Environment.Scenes
2566 } 2566 }
2567 } 2567 }
2568 } 2568 }
2569
2570 /// <summary>
2571 /// Delete this object from the scene.
2572 /// </summary>
2573 /// <param name="group"></param>
2574 public void DeleteSceneObjectGroup(SceneObjectGroup group)
2575 {
2576 SceneObjectPart rootPart = (group).GetChildPart(group.UUID);
2577 if (rootPart.PhysActor != null)
2578 {
2579 PhysicsScene.RemovePrim(rootPart.PhysActor);
2580 rootPart.PhysActor = null;
2581 }
2582
2583 m_storageManager.DataStore.RemoveObject(group.UUID, m_regInfo.RegionID);
2584 group.DeleteGroup();
2585
2586 lock (Entities)
2587 {
2588 Entities.Remove(group.UUID);
2589 m_innerScene.RemoveAPrimCount();
2590 }
2591 group.DeleteParts();
2592 }
2569 2593
2570 /// <summary> 2594 /// <summary>
2571 /// 2595 ///
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index b7b4f70..1a32460 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -935,8 +935,10 @@ namespace OpenSim.Region.Environment.Scenes
935 935
936 m_scene.DeleteEntity(objectGroup.UUID); 936 m_scene.DeleteEntity(objectGroup.UUID);
937 937
938 objectGroup.DeleteParts(); 938 // TODO justincc Left here as a remind to myself to see if we can stop sending out
939 AbsolutePosition = AbsolutePosition; 939 // useless updates for this group once it has been deleted.
940 //objectGroup.DeleteParts();
941
940 ScheduleGroupForFullUpdate(); 942 ScheduleGroupForFullUpdate();
941 } 943 }
942 944
@@ -1021,9 +1023,9 @@ namespace OpenSim.Region.Environment.Scenes
1021 } 1023 }
1022 else 1024 else
1023 { 1025 {
1024 m_log.InfoFormat("[SCENE]: " + 1026 m_log.InfoFormat("[SCENE OBJECT GROUP]: " +
1025 "DelinkFromGroup(): Child prim local id {0} not found in object with root prim id {1}", 1027 "DelinkFromGroup(): Child prim {0} not found in object {1}, {2}",
1026 partID, LocalId); 1028 partID, LocalId, UUID);
1027 } 1029 }
1028 } 1030 }
1029 1031