diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/MapImage/MapImageServiceModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/MapImage/MapImageServiceModule.cs index f40541ea28..1357825f7d 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/MapImage/MapImageServiceModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/MapImage/MapImageServiceModule.cs @@ -210,7 +210,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.MapImage return; } - m_log.DebugFormat("{0} Upload maptile for {1}", LogHeader, scene.Name); // mapTile.Save( // DEBUG DEBUG // String.Format("maptiles/raw-{0}-{1}-{2}.jpg", regionName, scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY), @@ -218,12 +217,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.MapImage // If the region/maptile is legacy sized, just upload the one tile like it has always been done if (mapTile.Width == Constants.RegionSize && mapTile.Height == Constants.RegionSize) { + m_log.DebugFormat("{0} Upload maptile for {1}", LogHeader, scene.Name); ConvertAndUploadMaptile(scene, mapTile, scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY, scene.RegionInfo.RegionName); } else { + m_log.DebugFormat("{0} Upload {1} maptiles for {2}", LogHeader, + (mapTile.Width * mapTile.Height) / (Constants.RegionSize * Constants.RegionSize), + scene.Name); + // For larger regions (varregion) we must cut the region image into legacy sized // pieces since that is how the maptile system works. // Note the assumption that varregions are always a multiple of legacy size. diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index 57ec800c39..c249e9d002 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -66,7 +66,6 @@ namespace OpenSim.Region.CoreModules.World.WorldMap private static readonly string DEFAULT_WORLD_MAP_EXPORT_PATH = "exportmap.jpg"; private static readonly UUID STOP_UUID = UUID.Random(); - private static readonly string m_mapLayerPath = "0001/"; private OpenSim.Framework.BlockingQueue requests = new OpenSim.Framework.BlockingQueue(); @@ -177,6 +176,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap regionimage = regionimage.Replace("-", ""); m_log.Info("[WORLD MAP]: JPEG Map location: " + m_scene.RegionInfo.ServerURI + "index.php?method=" + regionimage); +/* MainServer.Instance.AddHTTPHandler(regionimage, new GenericHTTPDOSProtector(OnHTTPGetMapImage, OnHTTPThrottled, new BasicDosProtectorOptions() { @@ -187,6 +187,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap RequestTimeSpan = TimeSpan.FromSeconds(10), ThrottledAction = BasicDOSProtector.ThrottleAction.DoThrottledMethod }).Process); +*/ + + MainServer.Instance.AddHTTPHandler(regionimage, OnHTTPGetMapImage); MainServer.Instance.AddLLSDHandler( "/MAP/MapItems/" + m_scene.RegionInfo.RegionHandle.ToString(), HandleRemoteMapItemRequest); @@ -222,12 +225,12 @@ namespace OpenSim.Region.CoreModules.World.WorldMap public void OnRegisterCaps(UUID agentID, Caps caps) { //m_log.DebugFormat("[WORLD MAP]: OnRegisterCaps: agentID {0} caps {1}", agentID, caps); - string capsBase = "/CAPS/" + caps.CapsObjectPath; + string capspath = "/CAPS/" + UUID.Random(); caps.RegisterHandler( "MapLayer", new RestStreamHandler( "POST", - capsBase + m_mapLayerPath, + capspath, (request, path, param, httpRequest, httpResponse) => MapLayerRequest(request, path, param, agentID, caps), "MapLayer", @@ -1142,10 +1145,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap protected void MapBlockSendThread() { + List thisRunData = new List(); while (true) { - List thisRunData = new List(); - m_mapBlockRequestEvent.WaitOne(); lock (m_mapBlockRequestEvent) { @@ -1162,13 +1164,18 @@ namespace OpenSim.Region.CoreModules.World.WorldMap m_mapBlockRequestEvent.Reset(); } - foreach (MapBlockRequestData req in thisRunData) + if(thisRunData.Count > 0) { - // Null client stops thread - if (req.client == null) - return; + foreach (MapBlockRequestData req in thisRunData) + { + // Null client stops thread + if (req.client == null) + return; - GetAndSendBlocksInternal(req.client, req.minX, req.minY, req.maxX, req.maxY, req.flags); + GetAndSendBlocksInternal(req.client, req.minX, req.minY, req.maxX, req.maxY, req.flags); + } + + thisRunData.Clear(); } Thread.Sleep(50); @@ -1590,6 +1597,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap { m_scene.AssetService.Delete(lastID.ToString()); m_scene.RegionInfo.RegionSettings.TerrainImageID = UUID.Zero; + myMapImageJPEG = new byte[0]; needRegionSave = true; } @@ -1648,7 +1656,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap asset.Flags = AssetFlags.Maptile; // Store the new one - m_log.DebugFormat("[WORLD MAP]: Storing map tile {0} for {1}", asset.ID, m_scene.RegionInfo.RegionName); + m_log.DebugFormat("[WORLD MAP]: Storing map image {0} for {1}", asset.ID, m_scene.RegionInfo.RegionName); m_scene.AssetService.Store(asset);