From b242ceda1e7599a8e71150f3fcc9f27a64d18828 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 13 Dec 2011 20:42:39 +0000
Subject: 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.
---
OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 6 ++++--
.../Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | 4 ++--
2 files changed, 6 insertions(+), 4 deletions(-)
(limited to 'OpenSim')
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 7223438..9c86c74 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -575,8 +575,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
///
/// Add a handler for the given packet type.
///
- /// The packet is handled on its own thread. If packets must be handled in the order in which thye
- /// are received then please us ethe synchronous version of this method.
+ ///
+ /// 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.
+ ///
///
///
/// true if the handler was added. This is currently always the case.
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index f06fb14..29e3580 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -150,13 +150,13 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
changed = sp.Appearance.SetTextureEntries(textureEntry) || changed;
m_log.InfoFormat("[AVFACTORY]: received texture update for {0}", sp.UUID);
- Util.FireAndForget(delegate(object o) { ValidateBakedTextureCache(sp, false); });
+ ValidateBakedTextureCache(sp, false);
// 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
// appearance send and save here.
-
}
+
// save only if there were changes, send no matter what (doesn't hurt to send twice)
if (changed)
QueueAppearanceSave(sp.ControllingClient.AgentId);
--
cgit v1.1