diff options
author | Justin Clarke Casey | 2008-03-12 18:59:50 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2008-03-12 18:59:50 +0000 |
commit | bbb9a21eb5f5705215fe76b697bdcf1469dd3067 (patch) | |
tree | fbe9128f71b2cbc4c41b28313ac28ae861619906 /OpenSim/Region | |
parent | * Don't abort (and keep failing) the update if one Entity gives us an excepti... (diff) | |
download | opensim-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.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | 20 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 24 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 12 |
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 | ||