aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules/Agent/TextureDownload
diff options
context:
space:
mode:
authorDahlia Trimble2009-01-10 09:15:23 +0000
committerDahlia Trimble2009-01-10 09:15:23 +0000
commit630ce5b26446883043aa5e6541a4550d0e918659 (patch)
tree5128485b0d8e94c96593b352a421623cbd053acb /OpenSim/Region/Environment/Modules/Agent/TextureDownload
parentInclude the changes from StrawBerryFride's patch to (diff)
downloadopensim-SC-630ce5b26446883043aa5e6541a4550d0e918659.zip
opensim-SC-630ce5b26446883043aa5e6541a4550d0e918659.tar.gz
opensim-SC-630ce5b26446883043aa5e6541a4550d0e918659.tar.bz2
opensim-SC-630ce5b26446883043aa5e6541a4550d0e918659.tar.xz
Revert progressive texture patch from r8001 until issues can be addressed
Diffstat (limited to 'OpenSim/Region/Environment/Modules/Agent/TextureDownload')
-rw-r--r--OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureDownloadModule.cs62
-rw-r--r--OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureNotFoundSender.cs21
-rw-r--r--OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs31
3 files changed, 54 insertions, 60 deletions
diff --git a/OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureDownloadModule.cs b/OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureDownloadModule.cs
index 2f5ea23..6bb61e2 100644
--- a/OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureDownloadModule.cs
+++ b/OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureDownloadModule.cs
@@ -204,14 +204,14 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
204 /// <param name="e"></param> 204 /// <param name="e"></param>
205 public void TextureRequest(Object sender, TextureRequestArgs e) 205 public void TextureRequest(Object sender, TextureRequestArgs e)
206 { 206 {
207 IClientAPI client = (IClientAPI) sender; 207 IClientAPI client = (IClientAPI)sender;
208 208
209 if (e.Priority == 1016001f) // Preview 209 if (e.Priority == 1016001f) // Preview
210 { 210 {
211 if (client.Scene is Scene) 211 if (client.Scene is Scene)
212 { 212 {
213 Scene scene = (Scene)client.Scene; 213 Scene scene = (Scene)client.Scene;
214 214
215 CachedUserInfo profile = scene.CommsManager.UserProfileCacheService.GetUserDetails(client.AgentId); 215 CachedUserInfo profile = scene.CommsManager.UserProfileCacheService.GetUserDetails(client.AgentId);
216 if (profile == null) // Deny unknown user 216 if (profile == null) // Deny unknown user
217 return; 217 return;
@@ -241,52 +241,44 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
241 { 241 {
242 ITextureSender sender = null; 242 ITextureSender sender = null;
243 243
244// try 244 try
245// { 245 {
246 while (true) 246 while (true)
247 { 247 {
248 try 248 sender = m_queueSenders.Dequeue();
249
250 if (sender.Cancel)
249 { 251 {
250 sender = m_queueSenders.Dequeue(); 252 TextureSent(sender);
251 253
252 if (sender.Cancel) 254 sender.Cancel = false;
255 }
256 else
257 {
258 bool finished = sender.SendTexturePacket();
259 if (finished)
253 { 260 {
254 TextureSent(sender); 261 TextureSent(sender);
255
256 sender.Cancel = false;
257 } 262 }
258 else 263 else
259 { 264 {
260 bool finished = sender.SendTexturePacket(); 265 m_queueSenders.Enqueue(sender);
261 if (finished)
262 {
263 TextureSent(sender);
264 }
265 else
266 {
267 m_queueSenders.Enqueue(sender);
268 }
269 } 266 }
267 }
270 268
271 // Make sure that any sender we currently have can get garbage collected 269 // Make sure that any sender we currently have can get garbage collected
272 sender = null; 270 sender = null;
273 271
274 //m_log.InfoFormat("[TEXTURE] Texture sender queue size: {0}", m_queueSenders.Count()); 272 //m_log.InfoFormat("[TEXTURE] Texture sender queue size: {0}", m_queueSenders.Count());
275 }
276 catch(Exception e)
277 {
278 m_log.ErrorFormat(
279 "[TEXTURE]: Texture send thread caught exception. The texture send was aborted. Exception is {0}", e);
280 }
281 } 273 }
282// } 274 }
283// catch (Exception e) 275 catch (Exception e)
284// { 276 {
285// // TODO: Let users in the sim and those entering it and possibly an external watchdog know what has happened 277 // TODO: Let users in the sim and those entering it and possibly an external watchdog know what has happened
286// m_log.ErrorFormat( 278 m_log.ErrorFormat(
287// "[TEXTURE]: Texture send thread terminating with exception. PLEASE REBOOT YOUR SIM - TEXTURES WILL NOT BE AVAILABLE UNTIL YOU DO. Exception is {0}", 279 "[TEXTURE]: Texture send thread terminating with exception. PLEASE REBOOT YOUR SIM - TEXTURES WILL NOT BE AVAILABLE UNTIL YOU DO. Exception is {0}",
288// e); 280 e);
289// } 281 }
290 } 282 }
291 283
292 /// <summary> 284 /// <summary>
diff --git a/OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureNotFoundSender.cs b/OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureNotFoundSender.cs
index 044ee76..34ddee6 100644
--- a/OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureNotFoundSender.cs
+++ b/OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureNotFoundSender.cs
@@ -28,6 +28,7 @@
28using System.Reflection; 28using System.Reflection;
29using log4net; 29using log4net;
30using OpenMetaverse; 30using OpenMetaverse;
31using OpenMetaverse.Packets;
31using OpenSim.Framework; 32using OpenSim.Framework;
32using OpenSim.Region.Environment.Interfaces; 33using OpenSim.Region.Environment.Interfaces;
33 34
@@ -38,11 +39,11 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
38 /// </summary> 39 /// </summary>
39 public class TextureNotFoundSender : ITextureSender 40 public class TextureNotFoundSender : ITextureSender
40 { 41 {
41// private static readonly log4net.ILog m_log 42 // private static readonly log4net.ILog m_log
42// = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 43 // = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
43 44
44// private IClientAPI m_client; 45 // private IClientAPI m_client;
45// private UUID m_textureId; 46 // private UUID m_textureId;
46 47
47 public TextureNotFoundSender(IClientAPI client, UUID textureID) 48 public TextureNotFoundSender(IClientAPI client, UUID textureID)
48 { 49 {
@@ -55,13 +56,13 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
55 public bool Sending 56 public bool Sending
56 { 57 {
57 get { return false; } 58 get { return false; }
58 set {} 59 set { }
59 } 60 }
60 61
61 public bool Cancel 62 public bool Cancel
62 { 63 {
63 get { return false; } 64 get { return false; }
64 set {} 65 set { }
65 } 66 }
66 67
67 // See ITextureSender 68 // See ITextureSender
@@ -73,13 +74,13 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
73 // See ITextureSender 74 // See ITextureSender
74 public bool SendTexturePacket() 75 public bool SendTexturePacket()
75 { 76 {
76// m_log.DebugFormat( 77 // m_log.DebugFormat(
77// "[TEXTURE NOT FOUND SENDER]: Informing the client that texture {0} cannot be found", 78 // "[TEXTURE NOT FOUND SENDER]: Informing the client that texture {0} cannot be found",
78// m_textureId); 79 // m_textureId);
79 80
80 // XXX Temporarily disabling as this appears to be causing client crashes on at least 81 // XXX Temporarily disabling as this appears to be causing client crashes on at least
81 // 1.19.0(5) of the Linden Second Life client. 82 // 1.19.0(5) of the Linden Second Life client.
82// m_client.SendImageNotFound(m_textureId); 83 // m_client.SendImageNotFound(m_textureId);
83 84
84 return true; 85 return true;
85 } 86 }
diff --git a/OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs b/OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs
index aab4ad0..e0790a2 100644
--- a/OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs
+++ b/OpenSim/Region/Environment/Modules/Agent/TextureDownload/UserTextureDownloadService.cs
@@ -56,10 +56,11 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
56 /// <summary> 56 /// <summary>
57 /// We will allow the client to request the same texture n times before dropping further requests 57 /// We will allow the client to request the same texture n times before dropping further requests
58 /// 58 ///
59 /// This number contains repeated requests for the same texture at different resolutions (which 59 /// This number includes repeated requests for the same texture at different resolutions (which we don't
60 /// are handled since r7368). However, this situation should be handled in a more sophisticated way. 60 /// currently handle properly as far as I know). However, this situation should be handled in a more
61 /// sophisticated way.
61 /// </summary> 62 /// </summary>
62 private static readonly int MAX_ALLOWED_TEXTURE_REQUESTS = 15; 63 private static readonly int MAX_ALLOWED_TEXTURE_REQUESTS = 5;
63 64
64 /// <summary> 65 /// <summary>
65 /// XXX Also going to limit requests for found textures. 66 /// XXX Also going to limit requests for found textures.
@@ -119,13 +120,13 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
119 } 120 }
120 else 121 else
121 { 122 {
122// m_log.DebugFormat("[TEXTURE]: Received a request for texture {0}", e.RequestedAssetID); 123 // m_log.DebugFormat("[TEXTURE]: Received a request for texture {0}", e.RequestedAssetID);
123 124
124 if (!foundTextureLimitStrategy.AllowRequest(e.RequestedAssetID)) 125 if (!foundTextureLimitStrategy.AllowRequest(e.RequestedAssetID))
125 { 126 {
126// m_log.DebugFormat( 127 // m_log.DebugFormat(
127// "[TEXTURE]: Refusing request for {0} from client {1}", 128 // "[TEXTURE]: Refusing request for {0} from client {1}",
128// e.RequestedAssetID, m_client.AgentId); 129 // e.RequestedAssetID, m_client.AgentId);
129 130
130 return; 131 return;
131 } 132 }
@@ -138,9 +139,9 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
138 139
139 // Commenting out this message for now as it causes too much noise with other 140 // Commenting out this message for now as it causes too much noise with other
140 // debug messages. 141 // debug messages.
141// m_log.DebugFormat( 142 // m_log.DebugFormat(
142// "[TEXTURE]: Dropping requests for notified missing texture {0} for client {1} since we have received more than {2} requests", 143 // "[TEXTURE]: Dropping requests for notified missing texture {0} for client {1} since we have received more than {2} requests",
143// e.RequestedAssetID, m_client.AgentId, MAX_ALLOWED_TEXTURE_REQUESTS); 144 // e.RequestedAssetID, m_client.AgentId, MAX_ALLOWED_TEXTURE_REQUESTS);
144 } 145 }
145 146
146 return; 147 return;
@@ -148,7 +149,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
148 149
149 m_scene.AddPendingDownloads(1); 150 m_scene.AddPendingDownloads(1);
150 151
151 TextureSender.TextureSender requestHandler = new TextureSender.TextureSender(m_client, e.DiscardLevel, e.PacketNumber, e.Priority); 152 TextureSender.TextureSender requestHandler = new TextureSender.TextureSender(m_client, e.DiscardLevel, e.PacketNumber);
152 m_textureSenders.Add(e.RequestedAssetID, requestHandler); 153 m_textureSenders.Add(e.RequestedAssetID, requestHandler);
153 154
154 m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback, true); 155 m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback, true);
@@ -195,9 +196,9 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
195 { 196 {
196 missingTextureLimitStrategy.MonitorRequests(textureID); 197 missingTextureLimitStrategy.MonitorRequests(textureID);
197 198
198// m_log.DebugFormat( 199 // m_log.DebugFormat(
199// "[TEXTURE]: Queueing first TextureNotFoundSender for {0}, client {1}", 200 // "[TEXTURE]: Queueing first TextureNotFoundSender for {0}, client {1}",
200// textureID, m_client.AgentId); 201 // textureID, m_client.AgentId);
201 } 202 }
202 203
203 ITextureSender textureNotFoundSender = new TextureNotFoundSender(m_client, textureID); 204 ITextureSender textureNotFoundSender = new TextureNotFoundSender(m_client, textureID);