* Patch from RemedyTomm Mantis 3440

* Revamps the server side texture pipeline
* Textures should load faster, get clogged less, and be less blurry
* Minor tweak to ensure the outgoing texture throttle stays private.
* Fixes mantis 3440
0.6.5-rc1
Teravus Ovares 2009-04-10 08:30:21 +00:00
parent 8e6c20b27f
commit 515bf6d7dc
6 changed files with 491 additions and 552 deletions

View File

@ -81,6 +81,7 @@ Patches
* nornalbion * nornalbion
* openlifegrid.com * openlifegrid.com
* ralphos * ralphos
* RemedyTomm
* rtomita * rtomita
* Ruud Lathorp * Ruud Lathorp
* SachaMagne * SachaMagne

View File

@ -36,6 +36,7 @@ namespace OpenSim.Framework
private uint m_packetNumber; private uint m_packetNumber;
private float m_priority; private float m_priority;
private int m_requestType; private int m_requestType;
private uint m_requestsequence;
protected UUID m_requestedAssetID; protected UUID m_requestedAssetID;
public float Priority public float Priority
@ -53,6 +54,12 @@ namespace OpenSim.Framework
set { m_packetNumber = value; } set { m_packetNumber = value; }
} }
public uint requestSequence
{
get { return m_requestsequence; }
set { m_requestsequence = value; }
}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>

View File

@ -4430,7 +4430,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// in the end, we dereference this, so we have to check if it's null // in the end, we dereference this, so we have to check if it's null
if (m_imageManager != null) if (m_imageManager != null)
m_imageManager.ProcessImageQueue(3); m_imageManager.ProcessImageQueue(5);
return; return;
} }
@ -6041,7 +6041,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
case PacketType.RequestImage: case PacketType.RequestImage:
RequestImagePacket imageRequest = (RequestImagePacket)Pack; RequestImagePacket imageRequest = (RequestImagePacket)Pack;
//m_log.Debug("image request: " + Pack.ToString()); //m_log.Debug("image request: " + Pack.ToString());
#region Packet Session and User Check #region Packet Session and User Check
if (m_checkPackets) if (m_checkPackets)
{ {
@ -6062,6 +6062,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
args.DiscardLevel = imageRequest.RequestImage[i].DiscardLevel; args.DiscardLevel = imageRequest.RequestImage[i].DiscardLevel;
args.PacketNumber = imageRequest.RequestImage[i].Packet; args.PacketNumber = imageRequest.RequestImage[i].Packet;
args.Priority = imageRequest.RequestImage[i].DownloadPriority; args.Priority = imageRequest.RequestImage[i].DownloadPriority;
args.requestSequence = imageRequest.Header.Sequence;
//handlerTextureRequest = OnRequestTexture; //handlerTextureRequest = OnRequestTexture;
@ -9114,7 +9115,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// in the end, we dereference this, so we have to check if it's null // in the end, we dereference this, so we have to check if it's null
if (m_imageManager != null ) if (m_imageManager != null )
m_imageManager.ProcessImageQueue(3); m_imageManager.ProcessImageQueue(10);
PacketPool.Instance.ReturnPacket(Pack); PacketPool.Instance.ReturnPacket(Pack);
} }

File diff suppressed because it is too large Load Diff

View File

@ -82,6 +82,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
internal LLPacketThrottle AssetThrottle; internal LLPacketThrottle AssetThrottle;
internal LLPacketThrottle TextureThrottle; internal LLPacketThrottle TextureThrottle;
internal LLPacketThrottle TotalThrottle; internal LLPacketThrottle TotalThrottle;
/// <summary>
/// The number of packets in the OutgoingPacketQueue
///
/// </summary>
internal int TextureOutgoingPacketQueueCount
{
get
{
if (TextureOutgoingPacketQueue == null)
return 0;
return TextureOutgoingPacketQueue.Count;
}
}
// private long LastThrottle; // private long LastThrottle;
// private long ThrottleInterval; // private long ThrottleInterval;

View File

@ -676,7 +676,20 @@ namespace OpenSim.Region.UserStatistics
{ {
m_log.Debug("INSERT"); m_log.Debug("INSERT");
updatecmd.CommandText = SQL_STATS_TABLE_INSERT; updatecmd.CommandText = SQL_STATS_TABLE_INSERT;
updatecmd.ExecuteNonQuery(); try
{
updatecmd.ExecuteNonQuery();
}
catch
(SqliteExecutionException)
{
m_log.Warn("[WEBSTATS]: failed to write stats to storage Execution Exception");
}
catch (SqliteSyntaxException)
{
m_log.Warn("[WEBSTATS]: failed to write stats to storage SQL Syntax Exception");
}
} }
} }