Merge branch 'master' of ssh://justincc@opensimulator.org/var/git/opensim

remotes/origin/0.6.7-post-fixes
Justin Clark-Casey (justincc) 2009-09-10 18:14:34 +01:00
commit 552ba5334f
12 changed files with 124 additions and 93 deletions

View File

@ -384,7 +384,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
System.Timers.Timer shutdownTimer = new System.Timers.Timer(timeout); // Wait before firing System.Timers.Timer shutdownTimer = new System.Timers.Timer(timeout); // Wait before firing
shutdownTimer.AutoReset = false; shutdownTimer.AutoReset = false;
shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed); shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed);
lock (shutdownTimer)
{
shutdownTimer.Start(); shutdownTimer.Start();
}
responseData["success"] = true; responseData["success"] = true;
} }

View File

@ -2177,12 +2177,15 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
watchDog.Interval = interval; watchDog.Interval = interval;
watchDog.AutoReset = false; watchDog.AutoReset = false;
watchDog.Enabled = true; watchDog.Enabled = true;
lock (watchDog)
watchDog.Start(); watchDog.Start();
} }
internal void stopWD() internal void stopWD()
{ {
Rest.Log.DebugFormat("{0} Reset watchdog", MsgId); Rest.Log.DebugFormat("{0} Reset watchdog", MsgId);
lock (watchDog)
watchDog.Stop(); watchDog.Stop();
} }

View File

@ -81,6 +81,7 @@ namespace OpenSim.Client.MXP
m_ticker.AutoReset = false; m_ticker.AutoReset = false;
m_ticker.Elapsed += ticker_Elapsed; m_ticker.Elapsed += ticker_Elapsed;
lock (m_ticker)
m_ticker.Start(); m_ticker.Start();
m_log.Info("[MXP ClientStack] MXP Enabled and Listening"); m_log.Info("[MXP ClientStack] MXP Enabled and Listening");
@ -99,12 +100,16 @@ namespace OpenSim.Client.MXP
} }
if (!m_shutdown) if (!m_shutdown)
{
lock (m_ticker)
m_ticker.Start(); m_ticker.Start();
} }
}
public void Close() public void Close()
{ {
m_shutdown = true; m_shutdown = true;
lock (m_ticker)
m_ticker.Stop(); m_ticker.Stop();
} }

View File

@ -502,7 +502,7 @@ namespace OpenSim.Framework.Capabilities
llsdFolder.folder_id = invFolder.ID; llsdFolder.folder_id = invFolder.ID;
llsdFolder.parent_id = invFolder.ParentID; llsdFolder.parent_id = invFolder.ParentID;
llsdFolder.name = invFolder.Name; llsdFolder.name = invFolder.Name;
if (invFolder.Type == -1) if (invFolder.Type < 0 || invFolder.Type >= TaskInventoryItem.Types.Length)
llsdFolder.type = "-1"; llsdFolder.type = "-1";
else else
llsdFolder.type = TaskInventoryItem.Types[invFolder.Type]; llsdFolder.type = TaskInventoryItem.Types[invFolder.Type];

View File

@ -58,6 +58,7 @@ namespace OpenSim.Grid.MessagingServer.Modules
m_messageCore = messageCore; m_messageCore = messageCore;
reconnectTimer.Elapsed += registerWithUserServer; reconnectTimer.Elapsed += registerWithUserServer;
lock (reconnectTimer)
reconnectTimer.Start(); reconnectTimer.Start();
} }

View File

@ -1042,6 +1042,14 @@ namespace OpenSim
uint regX = 1000; uint regX = 1000;
uint regY = 1000; uint regY = 1000;
IConfig standalone;
if ((standalone = m_config.Source.Configs["StandAlone"]) != null)
{
regX = (uint)standalone.GetInt("default_location_x", (int)regX);
regY = (uint)standalone.GetInt("default_location_y", (int)regY);
}
if (cmdparams.Length < 3) if (cmdparams.Length < 3)
firstName = MainConsole.Instance.CmdPrompt("First name", "Default"); firstName = MainConsole.Instance.CmdPrompt("First name", "Default");
else firstName = cmdparams[2]; else firstName = cmdparams[2];

View File

@ -581,6 +581,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void CloseCleanup(bool shutdownCircuit) private void CloseCleanup(bool shutdownCircuit)
{ {
m_scene.RemoveClient(AgentId); m_scene.RemoveClient(AgentId);
//m_log.InfoFormat("[CLIENTVIEW] Memory pre GC {0}", System.GC.GetTotalMemory(false)); //m_log.InfoFormat("[CLIENTVIEW] Memory pre GC {0}", System.GC.GetTotalMemory(false));
@ -592,12 +594,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
Thread.Sleep(2000); Thread.Sleep(2000);
// Shut down timers // Shut down timers. Thread Context of this method is murky. Lock all timers
if (m_clientPingTimer.Enabled) m_clientPingTimer.Stop(); if (m_clientPingTimer.Enabled)
if (m_avatarTerseUpdateTimer.Enabled) m_avatarTerseUpdateTimer.Stop(); lock (m_clientPingTimer)
if (m_primTerseUpdateTimer.Enabled) m_primTerseUpdateTimer.Stop(); m_clientPingTimer.Stop();
if (m_primFullUpdateTimer.Enabled) m_primFullUpdateTimer.Stop(); if (m_avatarTerseUpdateTimer.Enabled)
if (m_textureRequestTimer.Enabled) m_textureRequestTimer.Stop(); lock (m_avatarTerseUpdateTimer)
m_avatarTerseUpdateTimer.Stop();
if (m_primTerseUpdateTimer.Enabled)
lock (m_primTerseUpdateTimer)
m_primTerseUpdateTimer.Stop();
if (m_primFullUpdateTimer.Enabled)
lock (m_primFullUpdateTimer)
m_primFullUpdateTimer.Stop();
if (m_textureRequestTimer.Enabled)
lock (m_textureRequestTimer)
m_textureRequestTimer.Stop();
// This is just to give the client a reasonable chance of // This is just to give the client a reasonable chance of
// flushing out all it's packets. There should probably // flushing out all it's packets. There should probably
@ -676,12 +688,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void Stop() public void Stop()
{ {
// Shut down timers // Shut down timers. Thread Context is Murky, lock all timers!
if (m_clientPingTimer.Enabled) m_clientPingTimer.Stop(); if (m_clientPingTimer.Enabled)
if (m_avatarTerseUpdateTimer.Enabled) m_avatarTerseUpdateTimer.Stop(); lock (m_clientPingTimer)
if (m_primTerseUpdateTimer.Enabled) m_primTerseUpdateTimer.Stop(); m_clientPingTimer.Stop();
if (m_primFullUpdateTimer.Enabled) m_primFullUpdateTimer.Stop();
if (m_textureRequestTimer.Enabled) m_textureRequestTimer.Stop(); if (m_avatarTerseUpdateTimer.Enabled)
lock (m_avatarTerseUpdateTimer)
m_avatarTerseUpdateTimer.Stop();
if (m_primTerseUpdateTimer.Enabled)
lock (m_primTerseUpdateTimer)
m_primTerseUpdateTimer.Stop();
if (m_primFullUpdateTimer.Enabled)
lock (m_primFullUpdateTimer)
m_primFullUpdateTimer.Stop();
if (m_textureRequestTimer.Enabled)
lock (m_textureRequestTimer)
m_textureRequestTimer.Stop();
} }
public void Restart() public void Restart()
@ -2907,6 +2933,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
} }
else if (m_avatarTerseUpdates.Count == 1) else if (m_avatarTerseUpdates.Count == 1)
{ {
lock (m_avatarTerseUpdateTimer)
m_avatarTerseUpdateTimer.Start(); m_avatarTerseUpdateTimer.Start();
} }
} }
@ -2957,9 +2984,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(terse, ThrottleOutPacketType.Task); OutPacket(terse, ThrottleOutPacketType.Task);
if (m_avatarTerseUpdates.Count == 0) if (m_avatarTerseUpdates.Count == 0)
{
lock (m_avatarTerseUpdateTimer)
m_avatarTerseUpdateTimer.Stop(); m_avatarTerseUpdateTimer.Stop();
} }
} }
}
public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations) public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations)
{ {
@ -3138,6 +3168,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (m_imageManager.ProcessImageQueue(m_textureSendLimit, if (m_imageManager.ProcessImageQueue(m_textureSendLimit,
m_textureDataLimit)) m_textureDataLimit))
{ {
lock (m_textureRequestTimer)
m_textureRequestTimer.Start(); m_textureRequestTimer.Start();
} }
} }
@ -3149,6 +3180,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{ {
if (m_primFullUpdates.Count == 0 && m_primFullUpdateTimer.Enabled) if (m_primFullUpdates.Count == 0 && m_primFullUpdateTimer.Enabled)
{ {
lock (m_primFullUpdateTimer)
m_primFullUpdateTimer.Stop(); m_primFullUpdateTimer.Stop();
return; return;
@ -3196,6 +3228,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(outPacket, ThrottleOutPacketType.Task | ThrottleOutPacketType.LowPriority); OutPacket(outPacket, ThrottleOutPacketType.Task | ThrottleOutPacketType.LowPriority);
if (m_primFullUpdates.Count == 0 && m_primFullUpdateTimer.Enabled) if (m_primFullUpdates.Count == 0 && m_primFullUpdateTimer.Enabled)
lock (m_primFullUpdateTimer)
m_primFullUpdateTimer.Stop(); m_primFullUpdateTimer.Stop();
} }
} }
@ -3234,6 +3267,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{ {
if (m_primTerseUpdates.Count == 0) if (m_primTerseUpdates.Count == 0)
{ {
lock (m_primTerseUpdateTimer)
m_primTerseUpdateTimer.Stop(); m_primTerseUpdateTimer.Stop();
return; return;
@ -3284,6 +3318,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(outPacket, ThrottleOutPacketType.Task | ThrottleOutPacketType.LowPriority); OutPacket(outPacket, ThrottleOutPacketType.Task | ThrottleOutPacketType.LowPriority);
if (m_primTerseUpdates.Count == 0) if (m_primTerseUpdates.Count == 0)
lock (m_primTerseUpdateTimer)
m_primTerseUpdateTimer.Stop(); m_primTerseUpdateTimer.Stop();
} }
} }
@ -6586,6 +6621,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (m_imageManager != null) if (m_imageManager != null)
{ {
m_imageManager.EnqueueReq(args); m_imageManager.EnqueueReq(args);
lock (m_textureRequestTimer)
m_textureRequestTimer.Start(); m_textureRequestTimer.Start();
} }
} }

View File

@ -160,12 +160,18 @@ namespace Flotsam.RegionModules.AssetCache
m_CachCleanTimer.AutoReset = true; m_CachCleanTimer.AutoReset = true;
m_CachCleanTimer.Elapsed += CleanupExpiredFiles; m_CachCleanTimer.Elapsed += CleanupExpiredFiles;
m_CachCleanTimer.Enabled = true; m_CachCleanTimer.Enabled = true;
lock (m_CachCleanTimer)
{
m_CachCleanTimer.Start(); m_CachCleanTimer.Start();
} }
}
else else
{
lock (m_CachCleanTimer)
{ {
m_CachCleanTimer.Enabled = false; m_CachCleanTimer.Enabled = false;
} }
}
m_CacheDirectoryTiers = assetConfig.GetInt("CacheDirectoryTiers", 1); m_CacheDirectoryTiers = assetConfig.GetInt("CacheDirectoryTiers", 1);
if (m_CacheDirectoryTiers < 1) if (m_CacheDirectoryTiers < 1)

View File

@ -42,10 +42,11 @@ namespace OpenSim.Region.CoreModules.World.Land
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public string Name { get public string Name
{ {
return "RegionCombinerModule"; get { return "RegionCombinerModule"; }
} } }
public Type ReplaceableInterface public Type ReplaceableInterface
{ {
get { return null; } get { return null; }
@ -57,29 +58,21 @@ namespace OpenSim.Region.CoreModules.World.Land
public void Initialise(IConfigSource source) public void Initialise(IConfigSource source)
{ {
IConfig myConfig = source.Configs["Startup"]; IConfig myConfig = source.Configs["Startup"];
enabledYN = myConfig.GetBoolean("CombineContiguousRegions", false); enabledYN = myConfig.GetBoolean("CombineContiguousRegions", false);
//enabledYN = true; //enabledYN = true;
} }
public void Close() public void Close()
{ {
} }
public void AddRegion(Scene scene) public void AddRegion(Scene scene)
{ {
} }
public void RemoveRegion(Scene scene) public void RemoveRegion(Scene scene)
{ {
} }
public void RegionLoaded(Scene scene) public void RegionLoaded(Scene scene)
@ -304,12 +297,10 @@ namespace OpenSim.Region.CoreModules.World.Land
conn.UpdateExtents(extents); conn.UpdateExtents(extents);
m_log.DebugFormat("Scene: {0} to the west of Scene{1} Offset: {2}. Extents:{3}", m_log.DebugFormat("Scene: {0} to the west of Scene{1} Offset: {2}. Extents:{3}",
conn.RegionScene.RegionInfo.RegionName, conn.RegionScene.RegionInfo.RegionName,
regionConnections.RegionScene.RegionInfo.RegionName, offset, extents); regionConnections.RegionScene.RegionInfo.RegionName, offset, extents);
scene.BordersLocked = true; scene.BordersLocked = true;
conn.RegionScene.BordersLocked = true; conn.RegionScene.BordersLocked = true;
@ -347,8 +338,6 @@ namespace OpenSim.Region.CoreModules.World.Land
break; break;
} }
// If we're one region over x +y // If we're one region over x +y
//xyx //xyx
//xxx //xxx
@ -369,7 +358,6 @@ namespace OpenSim.Region.CoreModules.World.Land
extents.X = conn.XEnd; extents.X = conn.XEnd;
conn.UpdateExtents(extents); conn.UpdateExtents(extents);
scene.BordersLocked = true; scene.BordersLocked = true;
conn.RegionScene.BordersLocked = true; conn.RegionScene.BordersLocked = true;
@ -382,6 +370,7 @@ namespace OpenSim.Region.CoreModules.World.Land
m_log.DebugFormat("Scene: {0} to the northeast of Scene{1} Offset: {2}. Extents:{3}", m_log.DebugFormat("Scene: {0} to the northeast of Scene{1} Offset: {2}. Extents:{3}",
conn.RegionScene.RegionInfo.RegionName, conn.RegionScene.RegionInfo.RegionName,
regionConnections.RegionScene.RegionInfo.RegionName, offset, extents); regionConnections.RegionScene.RegionInfo.RegionName, offset, extents);
conn.RegionScene.PhysicsScene.Combine(null, Vector3.Zero, extents); conn.RegionScene.PhysicsScene.Combine(null, Vector3.Zero, extents);
scene.PhysicsScene.Combine(conn.RegionScene.PhysicsScene, offset, Vector3.Zero); scene.PhysicsScene.Combine(conn.RegionScene.PhysicsScene, offset, Vector3.Zero);
@ -444,6 +433,7 @@ namespace OpenSim.Region.CoreModules.World.Land
conn.RegionScene.PhysicsScene.Combine(null, Vector3.Zero, extents); conn.RegionScene.PhysicsScene.Combine(null, Vector3.Zero, extents);
scene.PhysicsScene.Combine(conn.RegionScene.PhysicsScene, offset, Vector3.Zero); scene.PhysicsScene.Combine(conn.RegionScene.PhysicsScene, offset, Vector3.Zero);
lock (conn.RegionScene.NorthBorders) lock (conn.RegionScene.NorthBorders)
{
if (conn.RegionScene.NorthBorders.Count == 1)// && 2) if (conn.RegionScene.NorthBorders.Count == 1)// && 2)
{ {
//compound border //compound border
@ -454,14 +444,13 @@ namespace OpenSim.Region.CoreModules.World.Land
conn.RegionScene.EastBorders[0].BorderLine.Y += (int)Constants.RegionSize; conn.RegionScene.EastBorders[0].BorderLine.Y += (int)Constants.RegionSize;
lock (conn.RegionScene.WestBorders) lock (conn.RegionScene.WestBorders)
conn.RegionScene.WestBorders[0].BorderLine.Y += (int)Constants.RegionSize; conn.RegionScene.WestBorders[0].BorderLine.Y += (int)Constants.RegionSize;
}
} }
lock (scene.SouthBorders) lock (scene.SouthBorders)
scene.SouthBorders[0].BorderLine.Z += (int)Constants.RegionSize; //auto teleport south scene.SouthBorders[0].BorderLine.Z += (int)Constants.RegionSize; //auto teleport south
lock (conn.RegionScene.EastBorders) lock (conn.RegionScene.EastBorders)
{
if (conn.RegionScene.EastBorders.Count == 1)// && conn.RegionScene.EastBorders.Count == 2) if (conn.RegionScene.EastBorders.Count == 1)// && conn.RegionScene.EastBorders.Count == 2)
{ {
@ -473,6 +462,7 @@ namespace OpenSim.Region.CoreModules.World.Land
} }
}
lock (scene.WestBorders) lock (scene.WestBorders)
scene.WestBorders[0].BorderLine.Z += (int)Constants.RegionSize; //auto teleport West scene.WestBorders[0].BorderLine.Z += (int)Constants.RegionSize; //auto teleport West
@ -503,9 +493,8 @@ namespace OpenSim.Region.CoreModules.World.Land
break; break;
} }
} }
if (!connectedYN) if (!connectedYN)
{ {
RegionData rdata = new RegionData(); RegionData rdata = new RegionData();
@ -528,9 +517,7 @@ namespace OpenSim.Region.CoreModules.World.Land
regionConnections.ClientEventForwarder = new RegionCombinerClientEventForwarder(regionConnections); regionConnections.ClientEventForwarder = new RegionCombinerClientEventForwarder(regionConnections);
scene.EventManager.OnNewPresence += SetCourseLocationDelegate; scene.EventManager.OnNewPresence += SetCourseLocationDelegate;
m_regions.Add(scene.RegionInfo.originRegionID, regionConnections); m_regions.Add(scene.RegionInfo.originRegionID, regionConnections);
} }
} }
AdjustLargeRegionBounds(); AdjustLargeRegionBounds();
} }
@ -643,12 +630,10 @@ namespace OpenSim.Region.CoreModules.World.Land
updatedata.UserAPI = LocateUsersChildAgentIClientAPI(offset, rootPresence.UUID, rdata); updatedata.UserAPI = LocateUsersChildAgentIClientAPI(offset, rootPresence.UUID, rdata);
updates.Add(offset,updatedata); updates.Add(offset,updatedata);
} }
updates[offset].Locations.Add(locations[i]); updates[offset].Locations.Add(locations[i]);
updates[offset].Uuids.Add(uuids[i]); updates[offset].Uuids.Add(uuids[i]);
} }
// Send out the CoarseLocationupdates from their respective client connection based on where the avatar is // Send out the CoarseLocationupdates from their respective client connection based on where the avatar is
@ -659,7 +644,6 @@ namespace OpenSim.Region.CoreModules.World.Land
updates[offset].UserAPI.SendCoarseLocationUpdate(updates[offset].Uuids,updates[offset].Locations); updates[offset].UserAPI.SendCoarseLocationUpdate(updates[offset].Uuids,updates[offset].Locations);
} }
} }
} }
private IClientAPI LocateUsersChildAgentIClientAPI(Vector2 offset, UUID uUID, RegionData[] rdata) private IClientAPI LocateUsersChildAgentIClientAPI(Vector2 offset, UUID uUID, RegionData[] rdata)
@ -678,11 +662,8 @@ namespace OpenSim.Region.CoreModules.World.Land
public void PostInitialise() public void PostInitialise()
{ {
} }
public void UnCombineRegion(RegionData rdata) public void UnCombineRegion(RegionData rdata)
{ {
lock (m_regions) lock (m_regions)
@ -706,6 +687,7 @@ namespace OpenSim.Region.CoreModules.World.Land
} }
} }
} }
// Create a set of infinite borders around the whole aabb of the combined island. // Create a set of infinite borders around the whole aabb of the combined island.
private void AdjustLargeRegionBounds() private void AdjustLargeRegionBounds()
{ {
@ -719,12 +701,10 @@ namespace OpenSim.Region.CoreModules.World.Land
{ {
if (rdata.Offset.X > offset.X) offset.X = rdata.Offset.X; if (rdata.Offset.X > offset.X) offset.X = rdata.Offset.X;
if (rdata.Offset.Y > offset.Y) offset.Y = rdata.Offset.Y; if (rdata.Offset.Y > offset.Y) offset.Y = rdata.Offset.Y;
} }
lock (rconn.RegionScene.NorthBorders) lock (rconn.RegionScene.NorthBorders)
{ {
Border northBorder = null; Border northBorder = null;
if (!TryGetInfiniteBorder(rconn.RegionScene.NorthBorders, out northBorder)) if (!TryGetInfiniteBorder(rconn.RegionScene.NorthBorders, out northBorder))
@ -736,7 +716,6 @@ namespace OpenSim.Region.CoreModules.World.Land
northBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, northBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue,
offset.Y + (int) Constants.RegionSize); //<--- offset.Y + (int) Constants.RegionSize); //<---
northBorder.CrossDirection = Cardinals.N; northBorder.CrossDirection = Cardinals.N;
} }
lock (rconn.RegionScene.SouthBorders) lock (rconn.RegionScene.SouthBorders)
@ -749,7 +728,6 @@ namespace OpenSim.Region.CoreModules.World.Land
} }
southBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, 0); //---> southBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, 0); //--->
southBorder.CrossDirection = Cardinals.S; southBorder.CrossDirection = Cardinals.S;
} }
lock (rconn.RegionScene.EastBorders) lock (rconn.RegionScene.EastBorders)
@ -763,7 +741,6 @@ namespace OpenSim.Region.CoreModules.World.Land
eastBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, offset.X + (int)Constants.RegionSize); eastBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, offset.X + (int)Constants.RegionSize);
//<--- //<---
eastBorder.CrossDirection = Cardinals.E; eastBorder.CrossDirection = Cardinals.E;
} }
lock (rconn.RegionScene.WestBorders) lock (rconn.RegionScene.WestBorders)
@ -777,11 +754,8 @@ namespace OpenSim.Region.CoreModules.World.Land
} }
westBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, 0); //---> westBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, 0); //--->
westBorder.CrossDirection = Cardinals.W; westBorder.CrossDirection = Cardinals.W;
} }
rconn.RegionScene.BordersLocked = false; rconn.RegionScene.BordersLocked = false;
} }
} }
@ -823,8 +797,6 @@ namespace OpenSim.Region.CoreModules.World.Land
if (BigRegion.PermissionModule == null) if (BigRegion.PermissionModule == null)
BigRegion.PermissionModule = new RegionCombinerPermissionModule(BigRegion.RegionScene); BigRegion.PermissionModule = new RegionCombinerPermissionModule(BigRegion.RegionScene);
VirtualRegion.Permissions.OnBypassPermissions += BigRegion.PermissionModule.BypassPermissions; VirtualRegion.Permissions.OnBypassPermissions += BigRegion.PermissionModule.BypassPermissions;
VirtualRegion.Permissions.OnSetBypassPermissions += BigRegion.PermissionModule.SetBypassPermissions; VirtualRegion.Permissions.OnSetBypassPermissions += BigRegion.PermissionModule.SetBypassPermissions;
VirtualRegion.Permissions.OnPropagatePermissions += BigRegion.PermissionModule.PropagatePermissions; VirtualRegion.Permissions.OnPropagatePermissions += BigRegion.PermissionModule.PropagatePermissions;
@ -855,27 +827,24 @@ namespace OpenSim.Region.CoreModules.World.Land
VirtualRegion.Permissions.OnLinkObject += BigRegion.PermissionModule.CanLinkObject; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnLinkObject += BigRegion.PermissionModule.CanLinkObject; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnDelinkObject += BigRegion.PermissionModule.CanDelinkObject; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnDelinkObject += BigRegion.PermissionModule.CanDelinkObject; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnBuyLand += BigRegion.PermissionModule.CanBuyLand; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnBuyLand += BigRegion.PermissionModule.CanBuyLand; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnViewNotecard += BigRegion.PermissionModule.CanViewNotecard; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnViewNotecard += BigRegion.PermissionModule.CanViewNotecard; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnViewScript += BigRegion.PermissionModule.CanViewScript; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnViewScript += BigRegion.PermissionModule.CanViewScript; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnEditNotecard += BigRegion.PermissionModule.CanEditNotecard; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnEditNotecard += BigRegion.PermissionModule.CanEditNotecard; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnEditScript += BigRegion.PermissionModule.CanEditScript; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnEditScript += BigRegion.PermissionModule.CanEditScript; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnCreateObjectInventory += BigRegion.PermissionModule.CanCreateObjectInventory; //NOT IMPLEMENTED HERE VirtualRegion.Permissions.OnCreateObjectInventory += BigRegion.PermissionModule.CanCreateObjectInventory; //NOT IMPLEMENTED HERE
VirtualRegion.Permissions.OnEditObjectInventory += BigRegion.PermissionModule.CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED VirtualRegion.Permissions.OnEditObjectInventory += BigRegion.PermissionModule.CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED
VirtualRegion.Permissions.OnCopyObjectInventory += BigRegion.PermissionModule.CanCopyObjectInventory; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnCopyObjectInventory += BigRegion.PermissionModule.CanCopyObjectInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnDeleteObjectInventory += BigRegion.PermissionModule.CanDeleteObjectInventory; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnDeleteObjectInventory += BigRegion.PermissionModule.CanDeleteObjectInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnResetScript += BigRegion.PermissionModule.CanResetScript; VirtualRegion.Permissions.OnResetScript += BigRegion.PermissionModule.CanResetScript;
VirtualRegion.Permissions.OnCreateUserInventory += BigRegion.PermissionModule.CanCreateUserInventory; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnCreateUserInventory += BigRegion.PermissionModule.CanCreateUserInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnCopyUserInventory += BigRegion.PermissionModule.CanCopyUserInventory; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnCopyUserInventory += BigRegion.PermissionModule.CanCopyUserInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnEditUserInventory += BigRegion.PermissionModule.CanEditUserInventory; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnEditUserInventory += BigRegion.PermissionModule.CanEditUserInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnDeleteUserInventory += BigRegion.PermissionModule.CanDeleteUserInventory; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnDeleteUserInventory += BigRegion.PermissionModule.CanDeleteUserInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnTeleport += BigRegion.PermissionModule.CanTeleport; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnTeleport += BigRegion.PermissionModule.CanTeleport; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnUseObjectReturn += BigRegion.PermissionModule.CanUseObjectReturn; //NOT YET IMPLEMENTED VirtualRegion.Permissions.OnUseObjectReturn += BigRegion.PermissionModule.CanUseObjectReturn; //NOT YET IMPLEMENTED
} }
} }
public class RegionConnections public class RegionConnections
{ {
public UUID RegionId; public UUID RegionId;
@ -893,7 +862,6 @@ namespace OpenSim.Region.CoreModules.World.Land
XEnd = (int)extents.X; XEnd = (int)extents.X;
YEnd = (int)extents.Y; YEnd = (int)extents.Y;
} }
} }
public class RegionData public class RegionData
@ -901,8 +869,8 @@ namespace OpenSim.Region.CoreModules.World.Land
public UUID RegionId; public UUID RegionId;
public Scene RegionScene; public Scene RegionScene;
public Vector3 Offset; public Vector3 Offset;
} }
struct RegionCourseLocationStruct struct RegionCourseLocationStruct
{ {
public List<Vector3> Locations; public List<Vector3> Locations;
@ -937,9 +905,7 @@ namespace OpenSim.Region.CoreModules.World.Land
public List<ILandObject> AllParcels() public List<ILandObject> AllParcels()
{ {
return RootRegionLandChannel.AllParcels(); return RootRegionLandChannel.AllParcels();
} }
public ILandObject GetLandObject(int x, int y) public ILandObject GetLandObject(int x, int y)
@ -1044,12 +1010,14 @@ namespace OpenSim.Region.CoreModules.World.Land
public class RegionCombinerPermissionModule public class RegionCombinerPermissionModule
{ {
private Scene m_rootScene; private Scene m_rootScene;
public RegionCombinerPermissionModule(Scene RootScene) public RegionCombinerPermissionModule(Scene RootScene)
{ {
m_rootScene = RootScene; m_rootScene = RootScene;
} }
#region Permission Override #region Permission Override
public bool BypassPermissions() public bool BypassPermissions()
{ {
return m_rootScene.Permissions.BypassPermissions(); return m_rootScene.Permissions.BypassPermissions();
@ -1274,6 +1242,7 @@ namespace OpenSim.Region.CoreModules.World.Land
{ {
return m_rootScene.Permissions.CanUseObjectReturn(landdata, type, client, retlist); return m_rootScene.Permissions.CanUseObjectReturn(landdata, type, client, retlist);
} }
#endregion #endregion
} }
@ -1283,11 +1252,10 @@ namespace OpenSim.Region.CoreModules.World.Land
private Dictionary<UUID, Scene> m_virtScene = new Dictionary<UUID, Scene>(); private Dictionary<UUID, Scene> m_virtScene = new Dictionary<UUID, Scene>();
private Dictionary<UUID,RegionCombinerModuleIndividualForwarder> m_forwarders = new Dictionary<UUID, private Dictionary<UUID,RegionCombinerModuleIndividualForwarder> m_forwarders = new Dictionary<UUID,
RegionCombinerModuleIndividualForwarder>(); RegionCombinerModuleIndividualForwarder>();
public RegionCombinerClientEventForwarder(RegionConnections rootScene) public RegionCombinerClientEventForwarder(RegionConnections rootScene)
{ {
m_rootScene = rootScene.RegionScene; m_rootScene = rootScene.RegionScene;
} }
public void AddSceneToEventForwarding(Scene virtualScene) public void AddSceneToEventForwarding(Scene virtualScene)
@ -1342,6 +1310,7 @@ namespace OpenSim.Region.CoreModules.World.Land
{ {
private Scene m_rootScene; private Scene m_rootScene;
private Scene m_virtScene; private Scene m_virtScene;
public RegionCombinerModuleIndividualForwarder(Scene rootScene, Scene virtScene) public RegionCombinerModuleIndividualForwarder(Scene rootScene, Scene virtScene)
{ {
m_rootScene = rootScene; m_rootScene = rootScene;
@ -1350,7 +1319,6 @@ namespace OpenSim.Region.CoreModules.World.Land
public void ClientConnect(IClientAPI client) public void ClientConnect(IClientAPI client)
{ {
m_virtScene.UnSubscribeToClientPrimEvents(client); m_virtScene.UnSubscribeToClientPrimEvents(client);
m_virtScene.UnSubscribeToClientPrimRezEvents(client); m_virtScene.UnSubscribeToClientPrimRezEvents(client);
m_virtScene.UnSubscribeToClientInventoryEvents(client); m_virtScene.UnSubscribeToClientInventoryEvents(client);
@ -1370,12 +1338,11 @@ namespace OpenSim.Region.CoreModules.World.Land
m_rootScene.SubscribeToClientGodEvents(client); m_rootScene.SubscribeToClientGodEvents(client);
m_rootScene.SubscribeToClientNetworkEvents(client); m_rootScene.SubscribeToClientNetworkEvents(client);
} }
public void ClientClosed(UUID clientid, Scene scene) public void ClientClosed(UUID clientid, Scene scene)
{ {
} }
private void LocalRezObject(IClientAPI remoteclient, UUID itemid, Vector3 rayend, Vector3 raystart, private void LocalRezObject(IClientAPI remoteclient, UUID itemid, Vector3 rayend, Vector3 raystart,
UUID raytargetid, byte bypassraycast, bool rayendisintersection, bool rezselected, bool removeitem, UUID raytargetid, byte bypassraycast, bool rayendisintersection, bool rezselected, bool removeitem,
UUID fromtaskid) UUID fromtaskid)
@ -1389,7 +1356,6 @@ namespace OpenSim.Region.CoreModules.World.Land
m_rootScene.RezObject(remoteclient, itemid, rayend, raystart, raytargetid, bypassraycast, m_rootScene.RezObject(remoteclient, itemid, rayend, raystart, raytargetid, bypassraycast,
rayendisintersection, rezselected, removeitem, fromtaskid); rayendisintersection, rezselected, removeitem, fromtaskid);
} }
private void LocalAddNewPrim(UUID ownerid, UUID groupid, Vector3 rayend, Quaternion rot, private void LocalAddNewPrim(UUID ownerid, UUID groupid, Vector3 rayend, Quaternion rot,
@ -1404,7 +1370,6 @@ namespace OpenSim.Region.CoreModules.World.Land
raystart.Y += differenceY * (int)Constants.RegionSize; raystart.Y += differenceY * (int)Constants.RegionSize;
m_rootScene.AddNewPrim(ownerid, groupid, rayend, rot, shape, bypassraycast, raystart, raytargetid, m_rootScene.AddNewPrim(ownerid, groupid, rayend, rot, shape, bypassraycast, raystart, raytargetid,
rayendisintersection); rayendisintersection);
} }
} }
} }

View File

@ -78,6 +78,7 @@ namespace OpenSim.Region.Framework.Scenes
bool permissionToDelete) bool permissionToDelete)
{ {
if (Enabled) if (Enabled)
lock (m_inventoryTicker)
m_inventoryTicker.Stop(); m_inventoryTicker.Stop();
lock (m_inventoryDeletes) lock (m_inventoryDeletes)
@ -93,6 +94,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
if (Enabled) if (Enabled)
lock (m_inventoryTicker)
m_inventoryTicker.Start(); m_inventoryTicker.Start();
// Visually remove it, even if it isnt really gone yet. This means that if we crash before the object // Visually remove it, even if it isnt really gone yet. This means that if we crash before the object

View File

@ -443,8 +443,8 @@ namespace OpenSim.Region.Framework.Scenes
int startX = (int) pRegionLocX - 1; int startX = (int) pRegionLocX - 1;
int startY = (int) pRegionLocY - 1; int startY = (int) pRegionLocY - 1;
int endX = (int) pRegionLocX + (int)extent.X + 1; int endX = (int) pRegionLocX + (int)extent.X;
int endY = (int) pRegionLocY + (int)extent.Y + 1; int endY = (int) pRegionLocY + (int)extent.Y;
for (int i=startX;i<endX;i++) for (int i=startX;i<endX;i++)
{ {

View File

@ -3762,6 +3762,8 @@ if (m_shape != null) {
lPos = AbsolutePosition; lPos = AbsolutePosition;
} }
// Causes this thread to dig into the Client Thread Data.
// Remember your locking here!
remoteClient.SendPrimTerseUpdate(m_regionHandle, remoteClient.SendPrimTerseUpdate(m_regionHandle,
(ushort)(m_parentGroup.GetTimeDilation() * (ushort)(m_parentGroup.GetTimeDilation() *
(float)ushort.MaxValue), LocalId, lPos, (float)ushort.MaxValue), LocalId, lPos,