aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs72
1 files changed, 60 insertions, 12 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs
index e3a881f..3e31b7d 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs
@@ -84,7 +84,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
84 /// <param name="newRequest"></param> 84 /// <param name="newRequest"></param>
85 public void EnqueueReq(TextureRequestArgs newRequest) 85 public void EnqueueReq(TextureRequestArgs newRequest)
86 { 86 {
87 //Make sure we're not shutting down..
88 if (!m_shuttingdown) 87 if (!m_shuttingdown)
89 { 88 {
90 J2KImage imgrequest; 89 J2KImage imgrequest;
@@ -99,19 +98,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP
99 { 98 {
100 //m_log.Debug("[TEX]: (CAN) ID=" + newRequest.RequestedAssetID); 99 //m_log.Debug("[TEX]: (CAN) ID=" + newRequest.RequestedAssetID);
101 100
102 try 101 try
103 { 102 {
104 lock (m_syncRoot) 103 lock (m_syncRoot)
105 m_priorityQueue.Delete(imgrequest.PriorityQueueHandle); 104 m_priorityQueue.Delete(imgrequest.PriorityQueueHandle);
106 } 105 }
107 catch (Exception) { } 106 catch (Exception) { }
108 } 107 }
109 else 108 else
110 { 109 {
110// m_log.DebugFormat(
111// "[LL IMAGE MANAGER]: Received duplicate of existing request for {0}, start packet {1} from {2}",
112// newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name);
113
111 //m_log.DebugFormat("[TEX]: (UPD) ID={0}: D={1}, S={2}, P={3}", 114 //m_log.DebugFormat("[TEX]: (UPD) ID={0}: D={1}, S={2}, P={3}",
112 // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority); 115 // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority);
113 116
114 //Check the packet sequence to make sure this isn't older than 117 //Check the packet sequence to make sure this isn't older than
115 //one we've already received 118 //one we've already received
116 if (newRequest.requestSequence > imgrequest.LastSequence) 119 if (newRequest.requestSequence > imgrequest.LastSequence)
117 { 120 {
@@ -126,11 +129,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP
126 129
127 //Update the requested priority 130 //Update the requested priority
128 imgrequest.Priority = newRequest.Priority; 131 imgrequest.Priority = newRequest.Priority;
132
129 UpdateImageInQueue(imgrequest); 133 UpdateImageInQueue(imgrequest);
130 134
131 //Run an update
132 imgrequest.RunUpdate(); 135 imgrequest.RunUpdate();
136
137// J2KImage imgrequest2 = new J2KImage(this);
138// imgrequest2.J2KDecoder = m_j2kDecodeModule;
139// imgrequest2.AssetService = m_assetCache;
140// imgrequest2.AgentID = m_client.AgentId;
141// imgrequest2.InventoryAccessModule = m_client.Scene.RequestModuleInterface<IInventoryAccessModule>();
142// imgrequest2.DiscardLevel = newRequest.DiscardLevel;
143// imgrequest2.StartPacket = Math.Max(1, newRequest.PacketNumber);
144// imgrequest2.Priority = newRequest.Priority;
145// imgrequest2.TextureID = newRequest.RequestedAssetID;
146// imgrequest2.Priority = newRequest.Priority;
147//
148// //Add this download to the priority queue
149// AddImageToQueue(imgrequest2);
150//
151// imgrequest2.RunUpdate();
152
133 } 153 }
154// else
155// {
156// m_log.DebugFormat(
157// "[LL IMAGE MANAGER]: Ignoring duplicate of existing request for {0} (sequence {1}) from {2} as its request sequence {3} is not greater",
158// newRequest.RequestedAssetID, imgrequest.LastSequence, m_client.Name, newRequest.requestSequence);
159// }
134 } 160 }
135 } 161 }
136 else 162 else
@@ -142,6 +168,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
142 } 168 }
143 else 169 else
144 { 170 {
171// m_log.DebugFormat(
172// "[LL IMAGE MANAGER]: Received request for {0}, start packet {1} from {2}",
173// newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name);
174
145 //m_log.DebugFormat("[TEX]: (NEW) ID={0}: D={1}, S={2}, P={3}", 175 //m_log.DebugFormat("[TEX]: (NEW) ID={0}: D={1}, S={2}, P={3}",
146 // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority); 176 // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority);
147 177
@@ -159,7 +189,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
159 //Add this download to the priority queue 189 //Add this download to the priority queue
160 AddImageToQueue(imgrequest); 190 AddImageToQueue(imgrequest);
161 191
162 //Run an update
163 imgrequest.RunUpdate(); 192 imgrequest.RunUpdate();
164 } 193 }
165 } 194 }
@@ -176,7 +205,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
176 205
177 // If null was returned, the texture priority queue is currently empty 206 // If null was returned, the texture priority queue is currently empty
178 if (image == null) 207 if (image == null)
179 return false; 208 break;
180 209
181 if (image.IsDecoded) 210 if (image.IsDecoded)
182 { 211 {
@@ -194,10 +223,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
194 // written. Undecoded textures should not be going into the priority 223 // written. Undecoded textures should not be going into the priority
195 // queue, because a high priority undecoded texture will clog up the 224 // queue, because a high priority undecoded texture will clog up the
196 // pipeline for a client 225 // pipeline for a client
197 return true; 226// m_log.DebugFormat(
227// "[LL IMAGE MANAGER]: Exiting image queue processing early on encountering undecoded image {0}",
228// image.TextureID);
229
230 break;
198 } 231 }
199 } 232 }
200 233
234// if (packetsSent != 0)
235// m_log.DebugFormat("[LL IMAGE MANAGER]: Processed {0} packets from image queue", packetsSent);
236
201 return m_priorityQueue.Count > 0; 237 return m_priorityQueue.Count > 0;
202 } 238 }
203 239
@@ -219,7 +255,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
219 { 255 {
220 if (m_priorityQueue.Count > 0) 256 if (m_priorityQueue.Count > 0)
221 { 257 {
222 try { image = m_priorityQueue.FindMax(); } 258 try
259 {
260 image = m_priorityQueue.FindMax();
261 }
223 catch (Exception) { } 262 catch (Exception) { }
224 } 263 }
225 } 264 }
@@ -232,7 +271,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
232 271
233 lock (m_syncRoot) 272 lock (m_syncRoot)
234 { 273 {
235 try { m_priorityQueue.Add(ref image.PriorityQueueHandle, image); } 274 try
275 {
276 m_priorityQueue.Add(ref image.PriorityQueueHandle, image);
277 }
236 catch (Exception) { } 278 catch (Exception) { }
237 } 279 }
238 } 280 }
@@ -241,7 +283,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
241 { 283 {
242 lock (m_syncRoot) 284 lock (m_syncRoot)
243 { 285 {
244 try { m_priorityQueue.Delete(image.PriorityQueueHandle); } 286 try
287 {
288 m_priorityQueue.Delete(image.PriorityQueueHandle);
289 }
245 catch (Exception) { } 290 catch (Exception) { }
246 } 291 }
247 } 292 }
@@ -250,7 +295,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
250 { 295 {
251 lock (m_syncRoot) 296 lock (m_syncRoot)
252 { 297 {
253 try { m_priorityQueue.Replace(image.PriorityQueueHandle, image); } 298 try
299 {
300 m_priorityQueue.Replace(image.PriorityQueueHandle, image);
301 }
254 catch (Exception) 302 catch (Exception)
255 { 303 {
256 image.PriorityQueueHandle = null; 304 image.PriorityQueueHandle = null;