* 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
This commit is contained in:
Justin Clarke Casey
2008-11-17 15:40:27 +00:00
parent dd37fbb137
commit d54b6608a7
7 changed files with 35 additions and 39 deletions

View File

@@ -126,7 +126,7 @@ namespace OpenSim.Region.Environment.Scenes
"[SCENE]: Sending deleted object to user's inventory, {0} item(s) remaining.", left);
x = m_inventoryDeletes.Dequeue();
if (x.objectGroup.RootPart != null)
if (!x.objectGroup.IsDeleted)
{
try
{