aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorHomer Horwitz2008-11-17 22:15:02 +0000
committerHomer Horwitz2008-11-17 22:15:02 +0000
commit5972eb8848ecd1033e987706e404abdc79bfa5e6 (patch)
tree3bc47d86c3093e2a4c34d24e8d61cd9db0092212 /OpenSim
parentSet group on newly rezzed objects to the rezzer's (or rezzing object's) (diff)
downloadopensim-SC-5972eb8848ecd1033e987706e404abdc79bfa5e6.zip
opensim-SC-5972eb8848ecd1033e987706e404abdc79bfa5e6.tar.gz
opensim-SC-5972eb8848ecd1033e987706e404abdc79bfa5e6.tar.bz2
opensim-SC-5972eb8848ecd1033e987706e404abdc79bfa5e6.tar.xz
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.
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs9
-rw-r--r--OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs14
2 files changed, 12 insertions, 11 deletions
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
57 /// <summary> 57 /// <summary>
58 /// We will allow the client to request the same texture n times before dropping further requests 58 /// We will allow the client to request the same texture n times before dropping further requests
59 /// 59 ///
60 /// This number includes repeated requests for the same texture at different resolutions (which we don't 60 /// This number contains repeated requests for the same texture at different resolutions (which
61 /// currently handle properly as far as I know). However, this situation should be handled in a more 61 /// are handled since r7368). However, this situation should be handled in a more sophisticated way.
62 /// sophisticated way.
63 /// </summary> 62 /// </summary>
64 private static readonly int MAX_ALLOWED_TEXTURE_REQUESTS = 5; 63 private static readonly int MAX_ALLOWED_TEXTURE_REQUESTS = 15;
65 64
66 /// <summary> 65 /// <summary>
67 /// XXX Also going to limit requests for found textures. 66 /// XXX Also going to limit requests for found textures.
@@ -150,7 +149,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
150 149
151 m_scene.AddPendingDownloads(1); 150 m_scene.AddPendingDownloads(1);
152 151
153 TextureSender.TextureSender requestHandler = new TextureSender.TextureSender(m_client, e.DiscardLevel, e.PacketNumber); 152 TextureSender.TextureSender requestHandler = new TextureSender.TextureSender(m_client, e.DiscardLevel, e.PacketNumber, e.Priority);
154 m_textureSenders.Add(e.RequestedAssetID, requestHandler); 153 m_textureSenders.Add(e.RequestedAssetID, requestHandler);
155 154
156 m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback, true); 155 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
146 private bool sendFirstPacket = false; 146 private bool sendFirstPacket = false;
147 private int initialDiscardLevel = 0; 147 private int initialDiscardLevel = 0;
148 private int initialPacketNum = 0; 148 private int initialPacketNum = 0;
149 private float initialPriority = 0.0f;
149 150
150 private ImageDownload download; 151 private ImageDownload download;
151 private IClientAPI RequestUser; 152 private IClientAPI RequestUser;
152 153
153 public TextureSender(IClientAPI client, int discardLevel, uint packetNumber) 154 public TextureSender(IClientAPI client, int discardLevel, uint packetNumber, float priority)
154 { 155 {
155 RequestUser = client; 156 RequestUser = client;
156 initialDiscardLevel = discardLevel; 157 initialDiscardLevel = discardLevel;
157 initialPacketNum = (int)packetNumber; 158 initialPacketNum = (int)packetNumber;
159 initialPriority = priority;
158 } 160 }
159 161
160 #region ITextureSender Members 162 #region ITextureSender Members
@@ -193,7 +195,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
193 // See ITextureSender 195 // See ITextureSender
194 public bool SendTexturePacket() 196 public bool SendTexturePacket()
195 { 197 {
196 if (!m_cancel && download.CurrentPacket <= download.StopPacket) 198 if (!m_cancel && (sendFirstPacket || download.CurrentPacket <= download.StopPacket))
197 { 199 {
198 SendPacket(); 200 SendPacket();
199 return false; 201 return false;
@@ -224,7 +226,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
224 OpenMetaverse.AssetTexture texture = new OpenMetaverse.AssetTexture(m_asset.FullID, m_asset.Data); 226 OpenMetaverse.AssetTexture texture = new OpenMetaverse.AssetTexture(m_asset.FullID, m_asset.Data);
225 if (texture.DecodeLayerBoundaries()) 227 if (texture.DecodeLayerBoundaries())
226 { 228 {
227 download = new ImageDownload(texture, initialDiscardLevel, 0.0f, initialPacketNum); 229 download = new ImageDownload(texture, initialDiscardLevel, initialPriority, initialPacketNum);
228 ImageLoaded = true; 230 ImageLoaded = true;
229 m_sending = true; 231 m_sending = true;
230 m_cancel = false; 232 m_cancel = false;
@@ -258,15 +260,15 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
258 { 260 {
259 sendFirstPacket = false; 261 sendFirstPacket = false;
260 262
261 if (m_asset.Data.Length <= 600) 263 if (m_asset.Data.Length <= ImageDownload.FIRST_IMAGE_PACKET_SIZE)
262 { 264 {
263 RequestUser.SendImageFirstPart(1, m_asset.FullID, (uint)m_asset.Data.Length, m_asset.Data, 2); 265 RequestUser.SendImageFirstPart(1, m_asset.FullID, (uint)m_asset.Data.Length, m_asset.Data, 2);
264 return; 266 return;
265 } 267 }
266 else 268 else
267 { 269 {
268 byte[] firstImageData = new byte[600]; 270 byte[] firstImageData = new byte[ImageDownload.FIRST_IMAGE_PACKET_SIZE];
269 Buffer.BlockCopy(m_asset.Data, 0, firstImageData, 0, 600); 271 Buffer.BlockCopy(m_asset.Data, 0, firstImageData, 0, ImageDownload.FIRST_IMAGE_PACKET_SIZE);
270 RequestUser.SendImageFirstPart((ushort)download.TexturePacketCount(), m_asset.FullID, (uint)m_asset.Data.Length, firstImageData, 2); 272 RequestUser.SendImageFirstPart((ushort)download.TexturePacketCount(), m_asset.FullID, (uint)m_asset.Data.Length, firstImageData, 2);
271 } 273 }
272 } 274 }