diff options
author | Justin Clarke Casey | 2008-11-17 15:40:27 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2008-11-17 15:40:27 +0000 |
commit | d54b6608a7acfa7fc9fd074f2fbd241519067fcb (patch) | |
tree | 4fb604c6b80f0e67d9ea8e884941386a9a4d6a4f /OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | |
parent | fixing warnings in YProlog language support (diff) | |
download | opensim-SC-d54b6608a7acfa7fc9fd074f2fbd241519067fcb.zip opensim-SC-d54b6608a7acfa7fc9fd074f2fbd241519067fcb.tar.gz opensim-SC-d54b6608a7acfa7fc9fd074f2fbd241519067fcb.tar.bz2 opensim-SC-d54b6608a7acfa7fc9fd074f2fbd241519067fcb.tar.xz |
* Stop nulling SOG.m_rootPart and parts on object deletion
* This renders RootPart == null checks useless - the replacement is to check SOG.IsDeleted. However, in many cases this will not be necessary since updates to deleted parts
will not be sent to the client
* This should remove any remaining race conditions where an object is deleted while another thread is yet to obtain the root part to perform some operation
* Doing this is probably a necessary prerequisite to moving to a model without a separate SOG and SOP
* Unfortunately it's not possible to eliminate all RootPart == null checks since in some contexts it is currently used to check whether an object was created successfully
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.Inventory.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 9ad8382..cc8501d 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | |||
@@ -1552,7 +1552,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1552 | if (part == null) | 1552 | if (part == null) |
1553 | return; | 1553 | return; |
1554 | 1554 | ||
1555 | if (part.ParentGroup == null || part.ParentGroup.RootPart == null) | 1555 | if (part.ParentGroup == null || part.ParentGroup.IsDeleted) |
1556 | return; | 1556 | return; |
1557 | 1557 | ||
1558 | // Can't delete child prims | 1558 | // Can't delete child prims |
@@ -2379,7 +2379,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2379 | public UUID RezSingleAttachment(SceneObjectGroup att, | 2379 | public UUID RezSingleAttachment(SceneObjectGroup att, |
2380 | IClientAPI remoteClient, UUID itemID, uint AttachmentPt) | 2380 | IClientAPI remoteClient, UUID itemID, uint AttachmentPt) |
2381 | { | 2381 | { |
2382 | if (att.RootPart != null) | 2382 | if (!att.IsDeleted) |
2383 | AttachmentPt = att.RootPart.AttachmentPoint; | 2383 | AttachmentPt = att.RootPart.AttachmentPoint; |
2384 | 2384 | ||
2385 | ScenePresence presence; | 2385 | ScenePresence presence; |