Apply the useful part of diva's patch that was skipped

avinationmerge
Melanie 2010-12-12 08:57:26 +00:00
parent 28022a9198
commit 663a626a6f
2 changed files with 7 additions and 31 deletions

View File

@ -219,13 +219,15 @@ namespace OpenSim.Region.Framework.Scenes
private double GetPriorityByBestAvatarResponsiveness(IClientAPI client, ISceneEntity entity)
{
// If this is an update for our own avatar give it the highest priority
if (client.AgentId == entity.UUID)
return 0.0;
if (entity == null)
return double.NaN;
ScenePresence presence = m_scene.GetScenePresence(client.AgentId);
if (presence != null)
{
// If this is an update for our own avatar give it the highest priority
if (presence == entity)
return 0.0;
// Use group position for child prims
Vector3 entityPos;
if (entity is SceneObjectPart)

View File

@ -2553,33 +2553,7 @@ namespace OpenSim.Region.Framework.Scenes
if (m_isChildAgent)
{
// WHAT???
m_log.Debug("[SCENEPRESENCE]: AddNewMovement() called on child agent, making root agent!");
// we have to reset the user's child agent connections.
// Likely, here they've lost the eventqueue for other regions so border
// crossings will fail at this point unless we reset them.
List<ulong> regions = new List<ulong>(KnownChildRegionHandles);
regions.Remove(m_scene.RegionInfo.RegionHandle);
MakeRootAgent(new Vector3(127f, 127f, 127f), true);
// Async command
if (m_scene.SceneGridService != null)
{
m_scene.SceneGridService.SendCloseChildAgentConnections(UUID, regions);
// Give the above command some time to try and close the connections.
// this is really an emergency.. so sleep, or we'll get all discombobulated.
System.Threading.Thread.Sleep(500);
}
if (m_scene.SceneGridService != null)
{
IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface<IEntityTransferModule>();
if (m_agentTransfer != null)
m_agentTransfer.EnableChildAgents(this);
}
m_log.Debug("[SCENEPRESENCE]: AddNewMovement() called on child agent");
return;
}