* 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 assessThreadPoolClientBranch
parent
365cf8e455
commit
1677bde480
|
@ -78,10 +78,25 @@ namespace OpenSim.Framework.Communications.Cache
|
|||
= new AgentAssetTransactions(userID, this, m_dumpAssetsToFile);
|
||||
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);
|
||||
|
||||
lock (AgentTransactions)
|
||||
{
|
||||
AgentTransactions.Remove(userID);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create an inventory item from data that has been received through a transaction.
|
||||
|
|
|
@ -1467,6 +1467,8 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
ForEachScenePresence(
|
||||
delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
|
||||
|
||||
CommsManager.TransactionsManager.RemoveAgentAssetTransactions(agentID);
|
||||
|
||||
lock (m_scenePresences)
|
||||
{
|
||||
if (m_scenePresences.Remove(agentID))
|
||||
|
|
Loading…
Reference in New Issue