In AvatarFactoryModule.SetApperance(), perform ValidateBakedTextureCache() in the same thread rather than on another one.
The caller is already an async thread from LLClientView so this doesn't hold up the client. However, launching on a separate thread does remove the effect of m_setAppearanceLock This was potentially allowing two different SetAppearance threads to interfere with each other, though this probably rarely happens, if at all.0.7.2-post-fixes
parent
af117fe4d4
commit
93e65fb9d5
|
@ -574,8 +574,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a handler for the given packet type.
|
/// Add a handler for the given packet type.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>The packet is handled on its own thread. If packets must be handled in the order in which thye
|
/// <remarks>
|
||||||
/// are received then please us ethe synchronous version of this method.</remarks>
|
/// The packet is handled on its own thread. If packets must be handled in the order in which thye
|
||||||
|
/// are received then please use the synchronous version of this method.
|
||||||
|
/// </remarks>
|
||||||
/// <param name="packetType"></param>
|
/// <param name="packetType"></param>
|
||||||
/// <param name="handler"></param>
|
/// <param name="handler"></param>
|
||||||
/// <returns>true if the handler was added. This is currently always the case.</returns>
|
/// <returns>true if the handler was added. This is currently always the case.</returns>
|
||||||
|
|
|
@ -231,13 +231,13 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
||||||
changed = sp.Appearance.SetTextureEntries(textureEntry) || changed;
|
changed = sp.Appearance.SetTextureEntries(textureEntry) || changed;
|
||||||
|
|
||||||
m_log.InfoFormat("[AVFACTORY]: received texture update for {0}", client.AgentId);
|
m_log.InfoFormat("[AVFACTORY]: received texture update for {0}", client.AgentId);
|
||||||
Util.FireAndForget(delegate(object o) { ValidateBakedTextureCache(client, false); });
|
ValidateBakedTextureCache(client, false);
|
||||||
|
|
||||||
// This appears to be set only in the final stage of the appearance
|
// This appears to be set only in the final stage of the appearance
|
||||||
// update transaction. In theory, we should be able to do an immediate
|
// update transaction. In theory, we should be able to do an immediate
|
||||||
// appearance send and save here.
|
// appearance send and save here.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// save only if there were changes, send no matter what (doesn't hurt to send twice)
|
// save only if there were changes, send no matter what (doesn't hurt to send twice)
|
||||||
if (changed)
|
if (changed)
|
||||||
QueueAppearanceSave(client.AgentId);
|
QueueAppearanceSave(client.AgentId);
|
||||||
|
|
Loading…
Reference in New Issue