diff --git a/OpenSim/Data/MySQL/MySQLAssetData.cs b/OpenSim/Data/MySQL/MySQLAssetData.cs
index 259e186629..fc05d1d45d 100644
--- a/OpenSim/Data/MySQL/MySQLAssetData.cs
+++ b/OpenSim/Data/MySQL/MySQLAssetData.cs
@@ -44,7 +44,6 @@ namespace OpenSim.Data.MySQL
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private MySQLManager _dbConnection;
- private long TicksToEpoch;
#region IPlugin Members
@@ -61,8 +60,6 @@ namespace OpenSim.Data.MySQL
/// connect string
override public void Initialise(string connect)
{
- TicksToEpoch = new DateTime(1970,1,1).Ticks;
-
// TODO: This will let you pass in the connect string in
// the config, though someone will need to write that.
if (connect == String.Empty)
@@ -223,7 +220,7 @@ namespace OpenSim.Data.MySQL
using (cmd)
{
// create unix epoch time
- int now = (int)((DateTime.Now.Ticks - TicksToEpoch) / 10000000);
+ int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow);
cmd.Parameters.AddWithValue("?id", asset.ID);
cmd.Parameters.AddWithValue("?name", assetName);
cmd.Parameters.AddWithValue("?description", assetDescription);
@@ -248,6 +245,9 @@ namespace OpenSim.Data.MySQL
private void UpdateAccessTime(AssetBase asset)
{
+ // Writing to the database every time Get() is called on an asset is killing us. Seriously. -jph
+ return;
+
lock (_dbConnection)
{
_dbConnection.CheckConnection();
@@ -262,7 +262,7 @@ namespace OpenSim.Data.MySQL
using (cmd)
{
// create unix epoch time
- int now = (int)((DateTime.Now.Ticks - TicksToEpoch) / 10000000);
+ int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow);
cmd.Parameters.AddWithValue("?id", asset.ID);
cmd.Parameters.AddWithValue("?access_time", now);
cmd.ExecuteNonQuery();
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 0cb56822ed..c44c4c7940 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -2402,11 +2402,11 @@ namespace OpenSim.Region.Framework.Scenes
InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
item = InventoryService.GetItem(item);
presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/);
- IAvatarFactory ava = RequestModuleInterface();
- if (ava != null)
+
+ if (m_AvatarFactory != null)
{
m_log.InfoFormat("[SCENE INVENTORY]: Saving avatar attachment. AgentID:{0} ItemID:{1} AttachmentPoint:{2}", remoteClient.AgentId, itemID, AttachmentPt);
- ava.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
+ m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
}
}
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 14e4534d97..d3d397dde2 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2481,7 +2481,7 @@ namespace OpenSim.Region.Framework.Scenes
if (aCircuit == null || aCircuit.child == false)
{
sp.IsChildAgent = false;
- sp.RezAttachments();
+ Util.FireAndForget(delegate(object o) { sp.RezAttachments(); });
}
}
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 15fb11f19b..2a06f9eb9a 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -3841,6 +3841,9 @@ namespace OpenSim.Region.Framework.Scenes
List attPoints = m_appearance.GetAttachedPoints();
foreach (int p in attPoints)
{
+ if (m_isDeleted)
+ return;
+
UUID itemID = m_appearance.GetAttachedItem(p);
UUID assetID = m_appearance.GetAttachedAsset(p);
@@ -3866,9 +3869,7 @@ namespace OpenSim.Region.Framework.Scenes
{
m_log.ErrorFormat("[ATTACHMENT]: Unable to rez attachment: {0}", e.ToString());
}
-
}
-
}
}
}