diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/World/WorldMap')
-rw-r--r-- | OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index a4bcbad..f4b54aa 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs | |||
@@ -58,7 +58,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
58 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 58 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
59 | 59 | ||
60 | private static readonly string DEFAULT_WORLD_MAP_EXPORT_PATH = "exportmap.jpg"; | 60 | private static readonly string DEFAULT_WORLD_MAP_EXPORT_PATH = "exportmap.jpg"; |
61 | 61 | private static readonly UUID STOP_UUID = UUID.Random(); | |
62 | private static readonly string m_mapLayerPath = "0001/"; | 62 | private static readonly string m_mapLayerPath = "0001/"; |
63 | 63 | ||
64 | private OpenSim.Framework.BlockingQueue<MapRequestState> requests = new OpenSim.Framework.BlockingQueue<MapRequestState>(); | 64 | private OpenSim.Framework.BlockingQueue<MapRequestState> requests = new OpenSim.Framework.BlockingQueue<MapRequestState>(); |
@@ -349,7 +349,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
349 | private void StopThread() | 349 | private void StopThread() |
350 | { | 350 | { |
351 | MapRequestState st = new MapRequestState(); | 351 | MapRequestState st = new MapRequestState(); |
352 | st.agentID=UUID.Zero; | 352 | st.agentID=STOP_UUID; |
353 | st.EstateID=0; | 353 | st.EstateID=0; |
354 | st.flags=0; | 354 | st.flags=0; |
355 | st.godlike=false; | 355 | st.godlike=false; |
@@ -437,25 +437,26 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
437 | { | 437 | { |
438 | while (true) | 438 | while (true) |
439 | { | 439 | { |
440 | MapRequestState st = requests.Dequeue(); | 440 | MapRequestState st = requests.Dequeue(1000); |
441 | 441 | ||
442 | // end gracefully | 442 | // end gracefully |
443 | if (st.agentID == UUID.Zero) | 443 | if (st.agentID == STOP_UUID) |
444 | { | ||
445 | break; | 444 | break; |
446 | } | ||
447 | 445 | ||
448 | bool dorequest = true; | 446 | if (st.agentID != UUID.Zero) |
449 | lock (m_rootAgents) | ||
450 | { | 447 | { |
451 | if (!m_rootAgents.Contains(st.agentID)) | 448 | bool dorequest = true; |
452 | dorequest = false; | 449 | lock (m_rootAgents) |
453 | } | 450 | { |
451 | if (!m_rootAgents.Contains(st.agentID)) | ||
452 | dorequest = false; | ||
453 | } | ||
454 | 454 | ||
455 | if (dorequest) | 455 | if (dorequest) |
456 | { | 456 | { |
457 | OSDMap response = RequestMapItemsAsync("", st.agentID, st.flags, st.EstateID, st.godlike, st.itemtype, st.regionhandle); | 457 | OSDMap response = RequestMapItemsAsync("", st.agentID, st.flags, st.EstateID, st.godlike, st.itemtype, st.regionhandle); |
458 | RequestMapItemsCompleted(response); | 458 | RequestMapItemsCompleted(response); |
459 | } | ||
459 | } | 460 | } |
460 | 461 | ||
461 | Watchdog.UpdateThread(); | 462 | Watchdog.UpdateThread(); |