* Create a new ViewerEffectPacket for each viewer rather than reusing the packet structure
* This would have been a source of out_of_order messages for different sequences, which still appear to be happening0.6.0-stable
parent
227fd4eb11
commit
8ba8b0300a
|
@ -179,7 +179,6 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
public void ViewerEffectHandler(IClientAPI sender, List<ViewerEffectEventHandlerArg> args)
|
public void ViewerEffectHandler(IClientAPI sender, List<ViewerEffectEventHandlerArg> args)
|
||||||
{
|
{
|
||||||
ViewerEffectPacket packet = (ViewerEffectPacket)PacketPool.Instance.GetPacket(PacketType.ViewerEffect);
|
|
||||||
// TODO: don't create new blocks if recycling an old packet
|
// TODO: don't create new blocks if recycling an old packet
|
||||||
List<ViewerEffectPacket.EffectBlock> effectBlock = new List<ViewerEffectPacket.EffectBlock>();
|
List<ViewerEffectPacket.EffectBlock> effectBlock = new List<ViewerEffectPacket.EffectBlock>();
|
||||||
for (int i = 0; i < args.Count; i++)
|
for (int i = 0; i < args.Count; i++)
|
||||||
|
@ -193,7 +192,7 @@ namespace OpenSim.Framework
|
||||||
effect.TypeData = args[i].TypeData;
|
effect.TypeData = args[i].TypeData;
|
||||||
effectBlock.Add(effect);
|
effectBlock.Add(effect);
|
||||||
}
|
}
|
||||||
packet.Effect = effectBlock.ToArray();
|
ViewerEffectPacket.EffectBlock[] effectBlockArray = effectBlock.ToArray();
|
||||||
|
|
||||||
IClientAPI[] LocalClients;
|
IClientAPI[] LocalClients;
|
||||||
lock (m_clients)
|
lock (m_clients)
|
||||||
|
@ -206,6 +205,9 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
if (LocalClients[i].AgentId != sender.AgentId)
|
if (LocalClients[i].AgentId != sender.AgentId)
|
||||||
{
|
{
|
||||||
|
ViewerEffectPacket packet = (ViewerEffectPacket)PacketPool.Instance.GetPacket(PacketType.ViewerEffect);
|
||||||
|
packet.Effect = effectBlockArray;
|
||||||
|
|
||||||
packet.AgentData.AgentID = LocalClients[i].AgentId;
|
packet.AgentData.AgentID = LocalClients[i].AgentId;
|
||||||
packet.AgentData.SessionID = LocalClients[i].SessionId;
|
packet.AgentData.SessionID = LocalClients[i].SessionId;
|
||||||
packet.Header.Reliable = false;
|
packet.Header.Reliable = false;
|
||||||
|
|
Loading…
Reference in New Issue