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
shutdownTimer.AutoReset = false;
shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed);
shutdownTimer.Start();
lock (shutdownTimer)
{
shutdownTimer.Start();
}
responseData["success"] = true;
}

View File

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

View File

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

View File

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

View File

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

View File

@ -1042,6 +1042,14 @@ namespace OpenSim
uint regX = 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)
firstName = MainConsole.Instance.CmdPrompt("First name", "Default");
else firstName = cmdparams[2];

View File

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

View File

@ -160,11 +160,17 @@ namespace Flotsam.RegionModules.AssetCache
m_CachCleanTimer.AutoReset = true;
m_CachCleanTimer.Elapsed += CleanupExpiredFiles;
m_CachCleanTimer.Enabled = true;
m_CachCleanTimer.Start();
lock (m_CachCleanTimer)
{
m_CachCleanTimer.Start();
}
}
else
{
m_CachCleanTimer.Enabled = false;
lock (m_CachCleanTimer)
{
m_CachCleanTimer.Enabled = false;
}
}
m_CacheDirectoryTiers = assetConfig.GetInt("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);
public string Name { get
public string Name
{
return "RegionCombinerModule";
} }
get { return "RegionCombinerModule"; }
}
public Type ReplaceableInterface
{
get { return null; }
@ -57,29 +58,21 @@ namespace OpenSim.Region.CoreModules.World.Land
public void Initialise(IConfigSource source)
{
IConfig myConfig = source.Configs["Startup"];
enabledYN = myConfig.GetBoolean("CombineContiguousRegions", false);
//enabledYN = true;
}
public void Close()
{
}
public void AddRegion(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
}
public void RegionLoaded(Scene scene)
@ -304,12 +297,10 @@ namespace OpenSim.Region.CoreModules.World.Land
conn.UpdateExtents(extents);
m_log.DebugFormat("Scene: {0} to the west of Scene{1} Offset: {2}. Extents:{3}",
conn.RegionScene.RegionInfo.RegionName,
regionConnections.RegionScene.RegionInfo.RegionName, offset, extents);
scene.BordersLocked = true;
conn.RegionScene.BordersLocked = true;
@ -347,8 +338,6 @@ namespace OpenSim.Region.CoreModules.World.Land
break;
}
// If we're one region over x +y
//xyx
//xxx
@ -369,7 +358,6 @@ namespace OpenSim.Region.CoreModules.World.Land
extents.X = conn.XEnd;
conn.UpdateExtents(extents);
scene.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}",
conn.RegionScene.RegionInfo.RegionName,
regionConnections.RegionScene.RegionInfo.RegionName, offset, extents);
conn.RegionScene.PhysicsScene.Combine(null, Vector3.Zero, extents);
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);
scene.PhysicsScene.Combine(conn.RegionScene.PhysicsScene, offset, Vector3.Zero);
lock (conn.RegionScene.NorthBorders)
{
if (conn.RegionScene.NorthBorders.Count == 1)// && 2)
{
//compound border
@ -454,14 +444,13 @@ namespace OpenSim.Region.CoreModules.World.Land
conn.RegionScene.EastBorders[0].BorderLine.Y += (int)Constants.RegionSize;
lock (conn.RegionScene.WestBorders)
conn.RegionScene.WestBorders[0].BorderLine.Y += (int)Constants.RegionSize;
}
}
lock (scene.SouthBorders)
scene.SouthBorders[0].BorderLine.Z += (int)Constants.RegionSize; //auto teleport south
lock (conn.RegionScene.EastBorders)
{
if (conn.RegionScene.EastBorders.Count == 1)// && conn.RegionScene.EastBorders.Count == 2)
{
@ -473,7 +462,8 @@ namespace OpenSim.Region.CoreModules.World.Land
}
}
lock (scene.WestBorders)
scene.WestBorders[0].BorderLine.Z += (int)Constants.RegionSize; //auto teleport West
/*
@ -503,9 +493,8 @@ namespace OpenSim.Region.CoreModules.World.Land
break;
}
}
if (!connectedYN)
{
RegionData rdata = new RegionData();
@ -528,9 +517,7 @@ namespace OpenSim.Region.CoreModules.World.Land
regionConnections.ClientEventForwarder = new RegionCombinerClientEventForwarder(regionConnections);
scene.EventManager.OnNewPresence += SetCourseLocationDelegate;
m_regions.Add(scene.RegionInfo.originRegionID, regionConnections);
}
}
AdjustLargeRegionBounds();
}
@ -585,7 +572,7 @@ namespace OpenSim.Region.CoreModules.World.Land
}
private void DistributeCourseLocationUpdates(List<Vector3> locations, List<UUID> uuids,
RegionConnections connectiondata, ScenePresence rootPresence)
RegionConnections connectiondata, ScenePresence rootPresence)
{
RegionData[] rdata = connectiondata.ConnectedRegions.ToArray();
//List<IClientAPI> clients = new List<IClientAPI>();
@ -621,7 +608,7 @@ namespace OpenSim.Region.CoreModules.World.Land
}
// go over the locations and assign them to an IClientAPI
for (int i = 0; i < locations.Count;i++ )
for (int i = 0; i < locations.Count; i++)
//{locations[i]/(int) Constants.RegionSize;
{
Vector3 pPosition = new Vector3((int)locations[i].X / (int)Constants.RegionSize,
@ -643,12 +630,10 @@ namespace OpenSim.Region.CoreModules.World.Land
updatedata.UserAPI = LocateUsersChildAgentIClientAPI(offset, rootPresence.UUID, rdata);
updates.Add(offset,updatedata);
}
updates[offset].Locations.Add(locations[i]);
updates[offset].Uuids.Add(uuids[i]);
}
// 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);
}
}
}
private IClientAPI LocateUsersChildAgentIClientAPI(Vector2 offset, UUID uUID, RegionData[] rdata)
@ -678,11 +662,8 @@ namespace OpenSim.Region.CoreModules.World.Land
public void PostInitialise()
{
}
public void UnCombineRegion(RegionData rdata)
{
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.
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.Y > offset.Y) offset.Y = rdata.Offset.Y;
}
lock (rconn.RegionScene.NorthBorders)
{
Border northBorder = null;
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,
offset.Y + (int) Constants.RegionSize); //<---
northBorder.CrossDirection = Cardinals.N;
}
lock (rconn.RegionScene.SouthBorders)
@ -749,7 +728,6 @@ namespace OpenSim.Region.CoreModules.World.Land
}
southBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, 0); //--->
southBorder.CrossDirection = Cardinals.S;
}
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.CrossDirection = Cardinals.E;
}
lock (rconn.RegionScene.WestBorders)
@ -777,11 +754,8 @@ namespace OpenSim.Region.CoreModules.World.Land
}
westBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, 0); //--->
westBorder.CrossDirection = Cardinals.W;
}
rconn.RegionScene.BordersLocked = false;
}
}
@ -823,8 +797,6 @@ namespace OpenSim.Region.CoreModules.World.Land
if (BigRegion.PermissionModule == null)
BigRegion.PermissionModule = new RegionCombinerPermissionModule(BigRegion.RegionScene);
VirtualRegion.Permissions.OnBypassPermissions += BigRegion.PermissionModule.BypassPermissions;
VirtualRegion.Permissions.OnSetBypassPermissions += BigRegion.PermissionModule.SetBypassPermissions;
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.OnDelinkObject += BigRegion.PermissionModule.CanDelinkObject; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnBuyLand += BigRegion.PermissionModule.CanBuyLand; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnViewNotecard += BigRegion.PermissionModule.CanViewNotecard; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnViewScript += BigRegion.PermissionModule.CanViewScript; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnEditNotecard += BigRegion.PermissionModule.CanEditNotecard; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnEditScript += BigRegion.PermissionModule.CanEditScript; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnCreateObjectInventory += BigRegion.PermissionModule.CanCreateObjectInventory; //NOT IMPLEMENTED HERE
VirtualRegion.Permissions.OnEditObjectInventory += BigRegion.PermissionModule.CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED
VirtualRegion.Permissions.OnCopyObjectInventory += BigRegion.PermissionModule.CanCopyObjectInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnDeleteObjectInventory += BigRegion.PermissionModule.CanDeleteObjectInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnResetScript += BigRegion.PermissionModule.CanResetScript;
VirtualRegion.Permissions.OnCreateUserInventory += BigRegion.PermissionModule.CanCreateUserInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnCopyUserInventory += BigRegion.PermissionModule.CanCopyUserInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnEditUserInventory += BigRegion.PermissionModule.CanEditUserInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnDeleteUserInventory += BigRegion.PermissionModule.CanDeleteUserInventory; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnTeleport += BigRegion.PermissionModule.CanTeleport; //NOT YET IMPLEMENTED
VirtualRegion.Permissions.OnUseObjectReturn += BigRegion.PermissionModule.CanUseObjectReturn; //NOT YET IMPLEMENTED
}
}
public class RegionConnections
{
public UUID RegionId;
@ -893,7 +862,6 @@ namespace OpenSim.Region.CoreModules.World.Land
XEnd = (int)extents.X;
YEnd = (int)extents.Y;
}
}
public class RegionData
@ -901,8 +869,8 @@ namespace OpenSim.Region.CoreModules.World.Land
public UUID RegionId;
public Scene RegionScene;
public Vector3 Offset;
}
struct RegionCourseLocationStruct
{
public List<Vector3> Locations;
@ -922,7 +890,7 @@ namespace OpenSim.Region.CoreModules.World.Land
#region ILandChannel Members
public RegionCombinerLargeLandChannel(RegionData regData, ILandChannel rootRegionLandChannel,
List<RegionData> regionConnections)
List<RegionData> regionConnections)
{
RegData = regData;
RootRegionLandChannel = rootRegionLandChannel;
@ -937,9 +905,7 @@ namespace OpenSim.Region.CoreModules.World.Land
public List<ILandObject> AllParcels()
{
return RootRegionLandChannel.AllParcels();
}
public ILandObject GetLandObject(int x, int y)
@ -1044,12 +1010,14 @@ namespace OpenSim.Region.CoreModules.World.Land
public class RegionCombinerPermissionModule
{
private Scene m_rootScene;
public RegionCombinerPermissionModule(Scene RootScene)
{
m_rootScene = RootScene;
}
#region Permission Override
public bool 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);
}
#endregion
}
@ -1283,14 +1252,13 @@ namespace OpenSim.Region.CoreModules.World.Land
private Dictionary<UUID, Scene> m_virtScene = new Dictionary<UUID, Scene>();
private Dictionary<UUID,RegionCombinerModuleIndividualForwarder> m_forwarders = new Dictionary<UUID,
RegionCombinerModuleIndividualForwarder>();
public RegionCombinerClientEventForwarder(RegionConnections rootScene)
{
m_rootScene = rootScene.RegionScene;
}
public void AddSceneToEventForwarding( Scene virtualScene )
public void AddSceneToEventForwarding(Scene virtualScene)
{
lock (m_virtScene)
{
@ -1342,6 +1310,7 @@ namespace OpenSim.Region.CoreModules.World.Land
{
private Scene m_rootScene;
private Scene m_virtScene;
public RegionCombinerModuleIndividualForwarder(Scene rootScene, Scene virtScene)
{
m_rootScene = rootScene;
@ -1350,7 +1319,6 @@ namespace OpenSim.Region.CoreModules.World.Land
public void ClientConnect(IClientAPI client)
{
m_virtScene.UnSubscribeToClientPrimEvents(client);
m_virtScene.UnSubscribeToClientPrimRezEvents(client);
m_virtScene.UnSubscribeToClientInventoryEvents(client);
@ -1370,12 +1338,11 @@ namespace OpenSim.Region.CoreModules.World.Land
m_rootScene.SubscribeToClientGodEvents(client);
m_rootScene.SubscribeToClientNetworkEvents(client);
}
public void ClientClosed(UUID clientid, Scene scene)
{
}
private void LocalRezObject(IClientAPI remoteclient, UUID itemid, Vector3 rayend, Vector3 raystart,
UUID raytargetid, byte bypassraycast, bool rayendisintersection, bool rezselected, bool removeitem,
UUID fromtaskid)
@ -1389,7 +1356,6 @@ namespace OpenSim.Region.CoreModules.World.Land
m_rootScene.RezObject(remoteclient, itemid, rayend, raystart, raytargetid, bypassraycast,
rayendisintersection, rezselected, removeitem, fromtaskid);
}
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;
m_rootScene.AddNewPrim(ownerid, groupid, rayend, rot, shape, bypassraycast, raystart, raytargetid,
rayendisintersection);
}
}
}

View File

@ -78,7 +78,8 @@ namespace OpenSim.Region.Framework.Scenes
bool permissionToDelete)
{
if (Enabled)
m_inventoryTicker.Stop();
lock (m_inventoryTicker)
m_inventoryTicker.Stop();
lock (m_inventoryDeletes)
{
@ -93,7 +94,8 @@ namespace OpenSim.Region.Framework.Scenes
}
if (Enabled)
m_inventoryTicker.Start();
lock (m_inventoryTicker)
m_inventoryTicker.Start();
// Visually remove it, even if it isnt really gone yet. This means that if we crash before the object
// has gone to inventory, it will reappear in the region again on restart instead of being lost.

View File

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

View File

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