From 9132e251aa0d0d7395dc4868fd57799dd679cdb7 Mon Sep 17 00:00:00 2001
From: Master ScienceSim
Date: Tue, 26 Oct 2010 12:53:15 -0700
Subject: Made the check for texture assets asynchronous. This is one part of a
 bigger clean up that needs to happen around locks on appearance.

---
 .../Avatar/AvatarFactory/AvatarFactoryModule.cs         | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

(limited to 'OpenSim/Region/CoreModules')

diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index b74cdc9..5444f80 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -84,6 +84,15 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
             // client.OnAvatarNowWearing -= AvatarIsWearing;
         }
 
+        public void CheckBakedTextureAssets(IClientAPI client, UUID textureID, int idx)
+        {
+            if (m_scene.AssetService.Get(textureID.ToString()) == null)
+            {
+                m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",textureID,idx,client.Name);
+                client.SendRebakeAvatarTextures(textureID);
+            }
+        }
+        
         /// <summary>
         /// Set appearance data (textureentry and slider settings) received from the client
         /// </summary>
@@ -133,13 +142,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
                     Primitive.TextureEntryFace face = textureEntry.FaceTextures[j];
 
                     if (face != null && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE)
-                    {
-                        if (m_scene.AssetService.Get(face.TextureID.ToString()) == null)
-                        {
-                            m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",face.TextureID,j,client.Name);
-                            client.SendRebakeAvatarTextures(face.TextureID);
-                        }
-                    }
+                        Util.FireAndForget(delegate(object o) { CheckBakedTextureAssets(client,face.TextureID,j); });
                 }
                 changed = sp.Appearance.SetTextureEntries(textureEntry);
              
-- 
cgit v1.1