* Clean up the agent's asset transactions when it is removed from the scene

* This may or may not help with the memory leak, need to assess
ThreadPoolClientBranch
Justin Clarke Casey 2008-02-13 00:52:49 +00:00
parent 365cf8e455
commit 1677bde480
2 changed files with 19 additions and 2 deletions

View File

@ -78,9 +78,24 @@ namespace OpenSim.Framework.Communications.Cache
= new AgentAssetTransactions(userID, this, m_dumpAssetsToFile); = new AgentAssetTransactions(userID, this, m_dumpAssetsToFile);
AgentTransactions.Add(userID, transactions); AgentTransactions.Add(userID, transactions);
} }
}
return AgentTransactions[userID];
}
}
/// <summary>
/// Remove the given agent asset transactions. This should be called when a client is departing
/// from a scene (and hence won't be making any more transactions here).
/// </summary>
/// <param name="userID"></param>
public void RemoveAgentAssetTransactions(LLUUID userID)
{
m_log.DebugFormat("Removing agent asset transactions structure for agent {0}", userID);
return AgentTransactions[userID]; lock (AgentTransactions)
{
AgentTransactions.Remove(userID);
}
} }
/// <summary> /// <summary>

View File

@ -1466,6 +1466,8 @@ namespace OpenSim.Region.Environment.Scenes
ForEachScenePresence( ForEachScenePresence(
delegate(ScenePresence presence) { presence.CoarseLocationChange(); }); delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
CommsManager.TransactionsManager.RemoveAgentAssetTransactions(agentID);
lock (m_scenePresences) lock (m_scenePresences)
{ {