From 5972eb8848ecd1033e987706e404abdc79bfa5e6 Mon Sep 17 00:00:00 2001
From: Homer Horwitz
Date: Mon, 17 Nov 2008 22:15:02 +0000
Subject: Fix a few small issues with the progressive texture-download: - The
initial priority wasn't passed in, so a discardLevel of -1 in the first
request automatically cancelled texture-download. - One-packet textures
weren't handled, as CurrentPacket starts at 1 and StopPacket == 0 in that
case. - Increased MAX_ALLOWED_TEXTURE_REQUESTS to 15; incremental texture
downloads will cause more requests.
---
.../Agent/TextureDownload/UserTextureDownloadService.cs | 9 ++++-----
.../Modules/Agent/TextureSender/TextureSender.cs | 14 ++++++++------
2 files changed, 12 insertions(+), 11 deletions(-)
(limited to 'OpenSim/Region/Environment')
diff --git a/OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs b/OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs
index 715dc4b..bcae259 100644
--- a/OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs
+++ b/OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs
@@ -57,11 +57,10 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
///
/// We will allow the client to request the same texture n times before dropping further requests
///
- /// This number includes repeated requests for the same texture at different resolutions (which we don't
- /// currently handle properly as far as I know). However, this situation should be handled in a more
- /// sophisticated way.
+ /// This number contains repeated requests for the same texture at different resolutions (which
+ /// are handled since r7368). However, this situation should be handled in a more sophisticated way.
///
- private static readonly int MAX_ALLOWED_TEXTURE_REQUESTS = 5;
+ private static readonly int MAX_ALLOWED_TEXTURE_REQUESTS = 15;
///
/// XXX Also going to limit requests for found textures.
@@ -150,7 +149,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
m_scene.AddPendingDownloads(1);
- TextureSender.TextureSender requestHandler = new TextureSender.TextureSender(m_client, e.DiscardLevel, e.PacketNumber);
+ TextureSender.TextureSender requestHandler = new TextureSender.TextureSender(m_client, e.DiscardLevel, e.PacketNumber, e.Priority);
m_textureSenders.Add(e.RequestedAssetID, requestHandler);
m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback, true);
diff --git a/OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs b/OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs
index 265247c..53be7c5 100644
--- a/OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs
+++ b/OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs
@@ -146,15 +146,17 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
private bool sendFirstPacket = false;
private int initialDiscardLevel = 0;
private int initialPacketNum = 0;
+ private float initialPriority = 0.0f;
private ImageDownload download;
private IClientAPI RequestUser;
- public TextureSender(IClientAPI client, int discardLevel, uint packetNumber)
+ public TextureSender(IClientAPI client, int discardLevel, uint packetNumber, float priority)
{
RequestUser = client;
initialDiscardLevel = discardLevel;
initialPacketNum = (int)packetNumber;
+ initialPriority = priority;
}
#region ITextureSender Members
@@ -193,7 +195,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
// See ITextureSender
public bool SendTexturePacket()
{
- if (!m_cancel && download.CurrentPacket <= download.StopPacket)
+ if (!m_cancel && (sendFirstPacket || download.CurrentPacket <= download.StopPacket))
{
SendPacket();
return false;
@@ -224,7 +226,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
OpenMetaverse.AssetTexture texture = new OpenMetaverse.AssetTexture(m_asset.FullID, m_asset.Data);
if (texture.DecodeLayerBoundaries())
{
- download = new ImageDownload(texture, initialDiscardLevel, 0.0f, initialPacketNum);
+ download = new ImageDownload(texture, initialDiscardLevel, initialPriority, initialPacketNum);
ImageLoaded = true;
m_sending = true;
m_cancel = false;
@@ -258,15 +260,15 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
{
sendFirstPacket = false;
- if (m_asset.Data.Length <= 600)
+ if (m_asset.Data.Length <= ImageDownload.FIRST_IMAGE_PACKET_SIZE)
{
RequestUser.SendImageFirstPart(1, m_asset.FullID, (uint)m_asset.Data.Length, m_asset.Data, 2);
return;
}
else
{
- byte[] firstImageData = new byte[600];
- Buffer.BlockCopy(m_asset.Data, 0, firstImageData, 0, 600);
+ byte[] firstImageData = new byte[ImageDownload.FIRST_IMAGE_PACKET_SIZE];
+ Buffer.BlockCopy(m_asset.Data, 0, firstImageData, 0, ImageDownload.FIRST_IMAGE_PACKET_SIZE);
RequestUser.SendImageFirstPart((ushort)download.TexturePacketCount(), m_asset.FullID, (uint)m_asset.Data.Length, firstImageData, 2);
}
}
--
cgit v1.1