diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index a2fceb7..9b16281 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -31,6 +31,7 @@ using System.IO; | |||
31 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
32 | using System.Collections; | 32 | using System.Collections; |
33 | using System.Reflection; | 33 | using System.Reflection; |
34 | using System.Threading; | ||
34 | using OpenMetaverse; | 35 | using OpenMetaverse; |
35 | using log4net; | 36 | using log4net; |
36 | using OpenSim.Framework; | 37 | using OpenSim.Framework; |
@@ -209,6 +210,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
209 | if ((int)InventoryType.LSL == item.InvType) | 210 | if ((int)InventoryType.LSL == item.InvType) |
210 | { | 211 | { |
211 | CreateScriptInstance(item, startParam, postOnRez, engine, stateSource); | 212 | CreateScriptInstance(item, startParam, postOnRez, engine, stateSource); |
213 | if ((int)InventoryType.LSL == item.InvType) | ||
214 | { | ||
215 | CreateScriptInstance(item, startParam, postOnRez, engine, stateSource); | ||
216 | Thread.Sleep(10); // workaround for Mono cpu utilization > 100% bug | ||
217 | } | ||
212 | } | 218 | } |
213 | } | 219 | } |
214 | } | 220 | } |
@@ -269,7 +275,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
269 | // m_log.InfoFormat( | 275 | // m_log.InfoFormat( |
270 | // "[PRIM INVENTORY]: " + | 276 | // "[PRIM INVENTORY]: " + |
271 | // "Starting script {0}, {1} in prim {2}, {3}", | 277 | // "Starting script {0}, {1} in prim {2}, {3}", |
272 | // item.Name, item.ItemID, Name, UUID); | 278 | // item.Name, item.ItemID, m_part.Name, m_part.UUID); |
273 | 279 | ||
274 | if (!m_part.ParentGroup.Scene.Permissions.CanRunScript(item.ItemID, m_part.UUID, item.OwnerID)) | 280 | if (!m_part.ParentGroup.Scene.Permissions.CanRunScript(item.ItemID, m_part.UUID, item.OwnerID)) |
275 | { | 281 | { |
@@ -654,6 +660,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
654 | item.ParentID = m_part.UUID; | 660 | item.ParentID = m_part.UUID; |
655 | item.ParentPartID = m_part.UUID; | 661 | item.ParentPartID = m_part.UUID; |
656 | item.Name = name; | 662 | item.Name = name; |
663 | item.GroupID = m_part.GroupID; | ||
657 | 664 | ||
658 | m_items.LockItemsForWrite(true); | 665 | m_items.LockItemsForWrite(true); |
659 | m_items.Add(item.ItemID, item); | 666 | m_items.Add(item.ItemID, item); |
@@ -743,6 +750,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
743 | item.ParentID = m_part.UUID; | 750 | item.ParentID = m_part.UUID; |
744 | item.ParentPartID = m_part.UUID; | 751 | item.ParentPartID = m_part.UUID; |
745 | item.Flags = m_items[item.ItemID].Flags; | 752 | item.Flags = m_items[item.ItemID].Flags; |
753 | // If group permissions have been set on, check that the groupID is up to date in case it has | ||
754 | // changed since permissions were last set. | ||
755 | if (item.GroupPermissions != (uint)PermissionMask.None) | ||
756 | item.GroupID = m_part.GroupID; | ||
757 | |||
746 | if (item.AssetID == UUID.Zero) | 758 | if (item.AssetID == UUID.Zero) |
747 | { | 759 | { |
748 | item.AssetID = m_items[item.ItemID].AssetID; | 760 | item.AssetID = m_items[item.ItemID].AssetID; |
@@ -896,6 +908,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
896 | uint everyoneMask = 0; | 908 | uint everyoneMask = 0; |
897 | uint baseMask = item.BasePermissions; | 909 | uint baseMask = item.BasePermissions; |
898 | uint ownerMask = item.CurrentPermissions; | 910 | uint ownerMask = item.CurrentPermissions; |
911 | uint groupMask = item.GroupPermissions; | ||
899 | 912 | ||
900 | invString.AddItemStart(); | 913 | invString.AddItemStart(); |
901 | invString.AddNameValueLine("item_id", item.ItemID.ToString()); | 914 | invString.AddNameValueLine("item_id", item.ItemID.ToString()); |
@@ -905,7 +918,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
905 | 918 | ||
906 | invString.AddNameValueLine("base_mask", Utils.UIntToHexString(baseMask)); | 919 | invString.AddNameValueLine("base_mask", Utils.UIntToHexString(baseMask)); |
907 | invString.AddNameValueLine("owner_mask", Utils.UIntToHexString(ownerMask)); | 920 | invString.AddNameValueLine("owner_mask", Utils.UIntToHexString(ownerMask)); |
908 | invString.AddNameValueLine("group_mask", Utils.UIntToHexString(0)); | 921 | invString.AddNameValueLine("group_mask", Utils.UIntToHexString(groupMask)); |
909 | invString.AddNameValueLine("everyone_mask", Utils.UIntToHexString(everyoneMask)); | 922 | invString.AddNameValueLine("everyone_mask", Utils.UIntToHexString(everyoneMask)); |
910 | invString.AddNameValueLine("next_owner_mask", Utils.UIntToHexString(item.NextPermissions)); | 923 | invString.AddNameValueLine("next_owner_mask", Utils.UIntToHexString(item.NextPermissions)); |
911 | 924 | ||