make sog, sop and sop inventory IDisposable
parent
dd55a3d19c
commit
8b77162020
|
@ -876,7 +876,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
|
|
||||||
m_scene.DeleteSceneObject(so, false, false);
|
m_scene.DeleteSceneObject(so, false, false);
|
||||||
so.RemoveScriptInstances(true);
|
so.RemoveScriptInstances(true);
|
||||||
so.Clear();
|
so.Dispose();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1213,7 +1213,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
|
|
||||||
// Now, remove the scripts
|
// Now, remove the scripts
|
||||||
so.RemoveScriptInstances(true);
|
so.RemoveScriptInstances(true);
|
||||||
so.Clear();
|
so.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected SceneObjectGroup RezSingleAttachmentFromInventoryInternal(
|
protected SceneObjectGroup RezSingleAttachmentFromInventoryInternal(
|
||||||
|
|
|
@ -2795,7 +2795,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
// use this to mean also full delete
|
// use this to mean also full delete
|
||||||
if (removeScripts)
|
if (removeScripts)
|
||||||
group.Clear();
|
group.Dispose();
|
||||||
partList = null;
|
partList = null;
|
||||||
// m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID);
|
// m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID);
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// A scene object group is conceptually an object in the scene. The object is constituted of SceneObjectParts
|
/// A scene object group is conceptually an object in the scene. The object is constituted of SceneObjectParts
|
||||||
/// (often known as prims), one of which is considered the root part.
|
/// (often known as prims), one of which is considered the root part.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class SceneObjectGroup : EntityBase, ISceneObject
|
public partial class SceneObjectGroup : EntityBase, ISceneObject, IDisposable
|
||||||
{
|
{
|
||||||
// Axis selection bitmask used by SetAxisRotation()
|
// Axis selection bitmask used by SetAxisRotation()
|
||||||
// Just happen to be the same bits used by llSetStatus() and defined in ScriptBaseClass.
|
// Just happen to be the same bits used by llSetStatus() and defined in ScriptBaseClass.
|
||||||
|
@ -907,7 +907,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
avsToCrossFar.Clear();
|
avsToCrossFar.Clear();
|
||||||
avsToCross.Clear();
|
avsToCross.Clear();
|
||||||
sog.RemoveScriptInstances(true);
|
sog.RemoveScriptInstances(true);
|
||||||
sog.Clear();
|
sog.Dispose();
|
||||||
return sog;
|
return sog;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1362,6 +1362,42 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~SceneObjectGroup()
|
||||||
|
{
|
||||||
|
Dispose(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool disposed = false;
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
// Check to see if Dispose has already been called.
|
||||||
|
if (!disposed)
|
||||||
|
{
|
||||||
|
IsDeleted = true;
|
||||||
|
|
||||||
|
SceneObjectPart[] parts = m_parts.GetArray();
|
||||||
|
for(int i= 0; i < parts.Length; ++i)
|
||||||
|
parts[i].Dispose();
|
||||||
|
|
||||||
|
m_parts.Clear();
|
||||||
|
m_sittingAvatars.Clear();
|
||||||
|
// m_rootPart = null;
|
||||||
|
|
||||||
|
m_targets.Clear();
|
||||||
|
m_partsNameToLinkMap.Clear();
|
||||||
|
|
||||||
|
disposed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void LoadScriptState(XmlDocument doc)
|
public void LoadScriptState(XmlDocument doc)
|
||||||
{
|
{
|
||||||
XmlNodeList nodes = doc.GetElementsByTagName("SavedScriptState");
|
XmlNodeList nodes = doc.GetElementsByTagName("SavedScriptState");
|
||||||
|
@ -2412,7 +2448,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
backup_group.Clear();
|
backup_group.Dispose();
|
||||||
backup_group = null;
|
backup_group = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5277,17 +5313,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
InvalidateEffectivePerms();
|
InvalidateEffectivePerms();
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear some references to easy cg
|
|
||||||
public void Clear()
|
|
||||||
{
|
|
||||||
m_parts.Clear();
|
|
||||||
m_sittingAvatars.Clear();
|
|
||||||
// m_rootPart = null;
|
|
||||||
|
|
||||||
m_targets.Clear();
|
|
||||||
m_partsNameToLinkMap.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Dictionary<string,int> m_partsNameToLinkMap = new Dictionary<string, int>();
|
private Dictionary<string,int> m_partsNameToLinkMap = new Dictionary<string, int>();
|
||||||
private string GetLinkNumber_lastname;
|
private string GetLinkNumber_lastname;
|
||||||
private int GetLinkNumber_lastnumber;
|
private int GetLinkNumber_lastnumber;
|
||||||
|
|
|
@ -93,7 +93,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#endregion Enumerations
|
#endregion Enumerations
|
||||||
|
|
||||||
public class SceneObjectPart : ISceneEntity
|
public class SceneObjectPart : ISceneEntity, IDisposable
|
||||||
{
|
{
|
||||||
/// <value>
|
/// <value>
|
||||||
/// Denote all sides of the prim
|
/// Denote all sides of the prim
|
||||||
|
@ -454,6 +454,40 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
AggregateInnerPerms();
|
AggregateInnerPerms();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~SceneObjectPart()
|
||||||
|
{
|
||||||
|
Dispose(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool disposed = false;
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
// Check to see if Dispose has already been called.
|
||||||
|
if (!disposed)
|
||||||
|
{
|
||||||
|
if (KeyframeMotion != null)
|
||||||
|
{
|
||||||
|
KeyframeMotion.Delete();
|
||||||
|
KeyframeMotion = null;
|
||||||
|
}
|
||||||
|
if (PhysActor != null)
|
||||||
|
RemoveFromPhysics();
|
||||||
|
|
||||||
|
if (m_inventory != null)
|
||||||
|
{
|
||||||
|
m_inventory.Dispose();
|
||||||
|
m_inventory = null;
|
||||||
|
}
|
||||||
|
disposed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion Constructors
|
#endregion Constructors
|
||||||
|
|
||||||
#region XML Schema
|
#region XML Schema
|
||||||
|
|
|
@ -43,7 +43,7 @@ using PermissionMask = OpenSim.Framework.PermissionMask;
|
||||||
|
|
||||||
namespace OpenSim.Region.Framework.Scenes
|
namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
public class SceneObjectPartInventory : IEntityInventory
|
public class SceneObjectPartInventory : IEntityInventory , IDisposable
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
@ -125,6 +125,32 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_part = part;
|
m_part = part;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~SceneObjectPartInventory()
|
||||||
|
{
|
||||||
|
Dispose(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool disposed = false;
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
// Check to see if Dispose has already been called.
|
||||||
|
if (!disposed)
|
||||||
|
{
|
||||||
|
if (m_items != null)
|
||||||
|
{
|
||||||
|
m_items.Dispose();
|
||||||
|
m_items = null;
|
||||||
|
}
|
||||||
|
disposed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Force the task inventory of this prim to persist at the next update sweep
|
/// Force the task inventory of this prim to persist at the next update sweep
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue